将单个列表框项目写入不同的文本框并重复,直到所有文本框都已满

时间:2016-06-13 01:57:49

标签: vb.net

我正在用Visual Basic编程。 我有一个表格。

表格1包含: nameTextBox addNameButton namesListBox generateButton

week1TextBox week2TextBox week3TextBox week4TextBox

用户需要转到表单1并在文本框中键入名称,然后将名称添加到列表框中。用户将在列表框中添加4个名称。因此,ListBox将包含名称:Adam,Brenda和Carol。

单击generateButton时,必须按顺序将3个名称写入文本框。所以week1TextBox应该包含“Adam”,week2TextBox应该包含“Brenda”等...但是一旦将姓氏(在本例中为“Carol”)写入文本框,循环应该重新开始。最终,最多可能有50周的文本框(所以周50TextBox)。所以循环需要反复重复。

1 个答案:

答案 0 :(得分:0)

由于您的问题中缺少源代码,我真的不确定布局的确切外观,我只能提供一些建议/建议。

我建议您创建列表框控件,输入文本框和按钮以将名称添加到列表框中。除此之外,还添加了可滚动面板。 (不确定该控件的确切术语在VB.net中是什么;自从我使用该语言以来已经很长时间了。)因为听起来似乎有可能是面板上可变数量的项目,当用户去生成名称列表时,我会使用以下粗略的伪代码:

Dim OutputTexts As New ArrayList ' This is only here if you want to work with these textboxes later
Private Sub CreateOutput() Handles btnGenerate.Click
    pOutputPanel.Controls.Clear()
    OutputTexts.Clear()
    Dim NextX As Integer = 0 ' Pretty much unnecessary value, but included in case you want to mess with this
    Dim NextY As Integer = 0
    For i As Integer = 0 To Convert.ToInt32(txtWeekCount.Text)
        Dim txtName As New TextBox
        txtName.Text = lbNameList.Item(i Mod lbNameList.Items.Count)
        txtName.Location = new Point(NextX, NextY) ' Play with this as necessary
        NextY += 50 ' Play with this as necessary
        OutputTexts.Add(txtName)
        pOutputPanel.Controls.Add(txtName)
    Next
End Sub

同样,这是非常伪代码,所以我不鼓励复制和粘贴,但是给它一个读取,确保你理解所有这些,然后尝试实现类似的东西。可能有一种更简单的方法,但我没有在VB.NET中编程可能超过2年(至少)。尽管如此,这里最重要的是以下几行:lbNameList.Item(i Mod lbNameList.Items.Count)。通过Mod - 您的索引变量,您将按顺序访问项目,然后在 i 超出范围时从ListBox项目集合的开头重复。“ p>

我还鼓励您根据需要动态生成TextBox控件,而不是手动添加50个或更多TextBox控件。