我有一个代码可以将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)
它说它不存在,因为当表单加载时它从未创建过这样的文本框。这是我面临的挑战
任何帮助都是很有价值的
谢谢
答案 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)