将CSV读取到Vb.net中的一系列现有文本框

时间:2017-12-11 21:59:57

标签: vb.net

我有一个代码可以将csv导入自动生成的文本框,这是我以前的应用程序的一部分。但是我不得不重新编写整个脚本,其中包括将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)

它说它不存在,因为当表单加载时它从未创建过这样的文本框。这是我面临的挑战

任何帮助都是很有价值的

谢谢

1 个答案:

答案 0 :(得分:0)

我同意这是一个非常笨拙的设计,应该重做,但是为了回答你的问题......

你的代码在这里:My.Computer.FileSystem.WriteAllText(aduser1, ADBox1.Text, True)找不到ADBox1的原因是它没有被创建和引用,就像你拖到窗体上的对象一样。顺便说一下,这可能比在表单上拖动和命名100多个文本框更有用。坚果。在代码中创建文本框更好。

如果您“手动”向表单添加一个文本框,请检查设计器生成的表单代码,您将看到它为您创建了一个文本框。您会发现类似于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是一个全局表单,然后像这样更改WriteAllText行以获取ADBox1:

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