如何将 2 个不同列表框中的项添加到 VisualBasic 文本框的单行中?



我是一个初学者,我正在尝试做一个程序,它接受项目及其成本(用户输入(,并将它们组织在两个列表框中。对象列表和价目表。我正在尝试做的是将列表框项转换为文本框,从而允许我将其保存在文本文件中(或至少使其更容易(。这是负责"文本化"列表框的代码。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 
Button3.Click
For i = 0 To ObjectList.SelectedItems.Count
RichTextBox1.Clear()
RichTextBox1.Text &= (ObjectList.Items(i) & " - " & PriceList.Items(i) & vbNewLine)
Next
End Sub

我的问题是文本框仅显示第一行项目。 例如,如果列表框在第 1 行显示"计算机"和"1000",在第二行显示"纸张"和"3",则只会显示"计算机 - 1000"。

您的代码存在一些问题:

  • 您应该使用ObjectList.Items而不是ObjectList.SelectedItems
  • 您应该使用.Count - 1而不是.Count,因为最后一项的索引 =Items.Count - 1(因为第一个索引为 0(。请注意,ObjectList.Items(ObjectList.Count)会抛出一个IndexOutOfRangeException
  • 解决上述两个问题后,您将只会在文本框中看到最后一行,这是因为您在 For 循环中调用RichTextBox1.Clear(),强制RichTextBox1在每次迭代时清除其内容。您应该将该行移到循环之外(上方(。

因此,您的代码应如下所示:

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
RichTextBox1.Clear()
For i = 0 To ObjectList.Items.Count - 1
RichTextBox1.Text &= ObjectList.Items(i) & " - " & PriceList.Items(i) & vbNewLine
Next
End Sub

最后一件事:由于您使用相同的索引访问ObjectListPriceList的项目,因此您需要确保它们具有相同数量的项目。

最新更新