Vb.net 如何在VisualBasic中将两个不同列表框中的项目添加到文本框的一行中?

Vb.net 如何在VisualBasic中将两个不同列表框中的项目添加到文本框的一行中?,vb.net,Vb.net,我是一个初学者,我正在尝试做一个程序,它将项目及其成本(由用户输入)组织在两个列表框中。一个ObjectList和一个PriceList。我试图做的是将列表框项目转换为文本框,从而允许我将其保存在文本文件中(或者至少使其更容易)。这是负责“文本化”列表框的代码 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click For i = 0 To ObjectList.Selecte

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

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
我的问题是文本框只显示第一行项目。
例如,如果列表框第一行显示Computer和1000,第二行显示Paper和3,则只显示Computer-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

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

Basic、VBA和VB.NET是三种不同的语言。请不要使用多余的标签。非常感谢!我这样做的目的是,如果你有价格,你只能添加一个对象,反之亦然。