【问题标题】:vb.net storing "i" amount of textbox values in an arrayvb.net 在数组中存储“i”个文本框值
【发布时间】:2015-05-19 04:35:43
【问题描述】:

我的程序能够在运行时添加文本框。运行时表单上的文本框数量存储在变量i 中。我需要创建一个数组,将来自每个文本框的所有值存储在数组中的某个位置,直到值i。所有的文本框都有向上计数的名称。示例:

  • 文本框1
  • 文本框2
  • 文本框3

等等。总之,有什么方法可以将 i 文本框数量的值存储在数组中?任何帮助将不胜感激,谢谢。

补充说明:

  • 这个程序有点像一个注册表单,除了表单上可以有任意数量的文本框来存储在数组中之外。
  • 将文本框的值添加到数组的过程将由按下按钮触发,因此我无法在创建文本框时添加添加值。

【问题讨论】:

  • 正如马克约翰斯顿的回答所暗示的那样,您最好使用 List(Of TextBox),而不是使用数组来存储对 TextBoxes 的引用。

标签: vb.net


【解决方案1】:

在运行时创建文本框时,将文本框添加到列表中,如下所示:

    Dim textboxes As New List(Of TextBox)
    For I = 1 To 3
        Dim tb As New TextBox
        textboxes.Add(tb)
    Next

然后您可以枚举列表并分别处理每个文本框。类似于下面:

    For Each tb As TextBox In textboxes
        Dim value As String = tb.Text
    Next

【讨论】:

  • 我认为每次添加一个新文本框都会覆盖之前输入的文本框。
  • 您必须添加代码以将文本框放入所需的父窗体或容器控件中。
  • 哎呀,没关系,我添加了错误的代码......它可以工作,谢谢:)
【解决方案2】:

您可以使用字典来存储每个文本框的索引和关联的文本框值。像这样定义字典:

Dim dict As New Dictionary(Of String, String)

像这样填充它:

For index As Integer = 0 To 5
    dim txtBox = new TextBox
    txtBox.Name = index ' we'll make this index the name
    MyForm.Controls.Add(txtBox);
    dict.Add(index, txtBox )
Next

然后像这样使用它:(例如,当文本更改并且文本控件为发送者时)

dim txtBox = (TextBox)sender;
dict(txtBox .Name) = txtBox .Text

这里有几个链接可以参考我上面使用的内容:

对代码样本持保留态度。我不在带有 IDE 的机器上。

【讨论】:

  • 谢谢,我正在研究字典的东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2020-12-07
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多