Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 添加多个textbox.net_Vb.net_Ms Access - Fatal编程技术网

Vb.net 添加多个textbox.net

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

我想要的是,当我在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 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