2017-12-11 12 views
0

私の以前のアプリの一部であった自動生成テキストボックスにcsvを読み込むコードがあります。しかし、私は複数の既存のテキストボックスにcsvをインポートすることを含むスクリプト全体をやり直さなければならなかった。Vb.netの既存のテキストボックスにCSVを読み込む

以下は私の古いコードですが、魅力的でしたが、このコードでは、私のテキストボックスは、自分のcsvに存在する値の数に基づいて自動的に生成されていました。

Dim T(100) As TextBox 
    Using ofd As New OpenFileDialog() 
     If ofd.ShowDialog() = DialogResult.OK Then 
      TextBox1.Text = (ofd.FileName) 
     End If 
     Using MyReader As New Microsoft.VisualBasic. 
        FileIO.TextFieldParser(TextBox1.Text) 

      MyReader.TextFieldType = FileIO.FieldType.Delimited 
      MyReader.SetDelimiters(",") 
      Dim numer As Integer 
      Dim currentRow As String() 
      numer = 1 
      While Not MyReader.EndOfData 
       Try 
        currentRow = MyReader.ReadFields() 
        Dim currentField As String 

        For Each currentField In currentRow 
         If (currentField IsNot "") Then 

          Dim myTB As New TextBox 
          T(numer) = myTB 
          myTB.Text = currentField 
          myTB.Visible = True 
          myTB.Location = New Point(550, 92 + (numer * 28)) 
          myTB.Name = "ADBox" + numer.ToString 
          myTB.ReadOnly = True 
          Me.Controls.Add(myTB) 
          numer += 1 
         End If 

        Next 

       Catch ex As Microsoft.VisualBasic. 
        FileIO.MalformedLineException 
        MsgBox("Line " & ex.Message & 
      "is not valid and will be skipped.") 
       End Try 

      End While 
     End Using 


    End Using 

しかし、それは私のアプリでは問題の多くを作成したので、私は、既存のテキストボックス(複数)の値をロードする必要がありましたが、私は何とかすることはできませんよ。


EDIT1:

***上記のコードは、テキストボックスを作成し、私のCSV値を追加し、私が探していますが、私が作成した既存のテキストボックスに、CSVを注入され、自動的に生成されたテキストボックスではありません。私のコードはADUser1,2,3,4と呼ばれるテキストボックスを作成し、すべての値を入力しますが、テキストボックスから値をフェッチすることで、テキストファイルを作成します私の次のコードは、私は

My.Computer.FileSystem.WriteAllText(aduser1, ADBox1.Text, True) 
を宣言するときにために動作していないが、例えば

フォームが読み込まれたときにそのようなテキストボックスを作成したことがないため、存在しないと言います。これは私がすべてのヘルプは素晴らしい価値になります

おかげ

+0

である「私が何とかすることはできませんよ」問題の説明が完全に不十分です。 **エラーメッセージを含む**何が起こっているのかを正確に**説明してください。 – jmcilhinney

+0

質問がありましたか? DGVのように見えるか、UserControlsは100個のテキストボックスよりも簡単です。 1. OleDBで読んでください。2.データテーブルを記入してください。3. DGVにバインドしてください。4利益! – Plutonix

+0

上記のコードは、私のCSVにある値の数に基づいてテキストボックスを作成しますが、新しいテキストボックスではなく既存のテキストボックスに値を解析します。 –

答えて

0

を直面しています挑戦である私は、これは非常に厄介なデザインとやり直す必要がありますが、あなたに答えるためのものであることに同意します質問...

My.Computer.FileSystem.WriteAllText(aduser1, ADBox1.Text, True)は、ADBox1が見つからない理由は、フォームにドラッグするオブジェクトのように作成されて参照されないということです。ところで、これはフォーム上に100以上のテキストボックスをドラッグして名前を付けるよりも多くの作業です。ナッツ。コード内にテキストボックスを作成する方が良いです。

フォームに1つのテキストボックスを手動で追加する場合は、デザイナーが生成したフォームのコードを調べて、テキストボックスを作成したことを確認します。 Friend WithEvents ADBox1 As System.Windows.Forms.TextBox.と似たようなものが見つかります。これは、フォームコードでテキストボックスを参照できる理由です。ここでは、そこここには魔法はありません、あなたが技術的にあなたのコード内で同じことをやっている:

Dim T(100) As TextBox 
... 
Dim myTB As New TextBox 
T(numer) = myTB 

あなたのテキストボックスのいずれかを参照するために参照T(N)を使用することができます。 WriteAllText機能がどこにあるかは明らかではないが、あなたはDim T(100) As TextBoxがグローバル形式で、その後、ADBox1で取得するには、このようなWriteAllTextラインを変更してくださいする必要があるかもしれません:

My.Computer.FileSystem.WriteAllText(aduser1, T(1).Text, True) 
+0

Thanks for @ gman80013これはまさに私が望んでいたものです –