Vb.net 添加多个textbox.net
我想要的是,当我在texbox1.text中输入一个数字时,比如我输入3,它应该显示3 textbox,但我总是得到一个错误。我还必须把它保存在数据库里,但我不知道如何保存。请帮帮我Vb.net 添加多个textbox.net,vb.net,ms-access,Vb.net,Ms Access,我想要的是,当我在texbox1.text中输入一个数字时,比如我输入3,它应该显示3 textbox,但我总是得到一个错误。我还必须把它保存在数据库里,但我不知道如何保存。请帮帮我 Private boxes(TextBox1.text) As TextBox Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim newbo
Private boxes(TextBox1.text) As TextBox
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim newbox As TextBox
For i As Integer = 1 To TextBox1.Text
newbox = New TextBox
newbox.Size = New Drawing.Size(575, 35)
newbox.Location = New Point(10, 10 + 35 * (i - 1))
newbox.Name = "TextBox" & i
newbox.Text = newbox.Name
'connect it to a handler, save a reference to the array and add it to the form controls
AddHandler newbox.TextChanged, AddressOf TextBox_TextChanged
boxes(i) = newbox
Me.Controls.Add(newbox)
Next
End Sub
嗯。尝试运行您的代码时出现的错误是:-
An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
Additional information: Conversion from string "" to type 'Integer' is not valid.`
这是因为您试图使用字符串作为循环的终止索引来启动循环。试用
For i As Integer = 1 To Val(TextBox1.Text)
下一个问题将取决于如何声明框
。如果你这样声明的话
Dim boxes() As TextBox
最终会出现一个空引用异常,因为当您声明box
时,没有提供任何元素。要解决此问题,您需要在循环之前添加此项
ReDim Preserve boxes(Val(TextBox1.Text))
如果框
是一个列表。。老实说。。这是一个比数组更好的选择,而不是需要更改上面的行
boxes(i) = newbox
到
您可能还需要更改与框关联的其他代码,但这项工作是值得的
最大的问题是,您试图从一个甚至还没有出现的文本框中获取一个值。您已将代码放入表单的load
事件中。它确实需要在一个单独的方法中。哦,与其使用TextBox.changed
事件,还不如使用按钮控件来执行该方法。否则,人们很容易更改文本框中的数字。使用您的代码,每次更改文本框(删除一个数字或添加另一个数字)时,都会添加更多的文本框,最终可能会有很多文本框
所以可能的最终代码应该是这样的
Public Class Form1
Dim boxes As New List(Of TextBox)
Private Sub Addbuttons(buttonCount As Integer)
Dim newbox As TextBox
For i As Integer = 1 To buttonCount
newbox = New TextBox
newbox.Size = New Drawing.Size(575, 35)
newbox.Location = New Drawing.Point(10, 10 + 35 * (i - 1))
newbox.Name = "TextBox" & i
newbox.Text = newbox.Name
'connect it to a handler, save a reference to the array and add it to the form controls
boxes.Add(newbox)
Me.Controls.Add(newbox)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Addbuttons(Val(TextBox1.Text))
End Sub
End Class
大家好,欢迎来到Stack Overflow,这只是我发送给新成员的一条消息,希望能对大家有所帮助。新用户的学习曲线并不陡峭,但了解如何使用堆栈并不总是显而易见的。请花几分钟时间看看这里,看看这里也很重要。。此外,如果答案对您有效,请单击答案左侧的勾号,以便将问题标记为已回答,从而确保发布该问题的人获得声誉。干杯。那么你得到了什么错误,在哪一行呢?我在私有框(Textbox1.text)中得到了错误,作为Textbox,也作为integer=1到Textbox1.text对象引用没有设置为objectHeh的实例。出于某种原因,我没有看到第一行代码。查看我的答案以进行更正。这对我不起作用,应该是当我在文本框中输入一个数字时,就像当我输入3时,它会显示3文本框,但它不会显示。我怎么能叫它谢谢。它对我不起作用,应该是当我在文本框中输入一个数字,比如当我输入3时,它会显示3个文本框,但它不会显示。我该怎么称呼它呢?谢谢。啊,对不起,也许我应该用最后一段来解释。您已将代码放入表单的加载事件中。它应该在一个单独的子-我会编辑答案,以显示它很快。请给我一点时间编辑和添加更多文本。好的。虽然它确实应该作为一个单独的帖子来问——特别是如果它可能对其他用户有用的话——哦,而且(在这里厚颜无耻)别忘了点击答案左边的勾号,这样其他用户就可以看到这是一个适合你的答案——而且(咳嗽)我也有点名气;-)那么你的下一个问题是什么:)
Public Class Form1
Dim boxes As New List(Of TextBox)
Private Sub Addbuttons(buttonCount As Integer)
Dim newbox As TextBox
For i As Integer = 1 To buttonCount
newbox = New TextBox
newbox.Size = New Drawing.Size(575, 35)
newbox.Location = New Drawing.Point(10, 10 + 35 * (i - 1))
newbox.Name = "TextBox" & i
newbox.Text = newbox.Name
'connect it to a handler, save a reference to the array and add it to the form controls
boxes.Add(newbox)
Me.Controls.Add(newbox)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Addbuttons(Val(TextBox1.Text))
End Sub
End Class