[英]How to add Items to a Listbox?
下面的代码行也添加了列表框的每个索引的每一行。
ListBox1.Items.AddRange(CType(TabControl1.SelectedTab.Controls.Item(0), RichTextBox).Lines)
但是,如果我希望使用ScintillaNet DLL执行与下面一行相同的功能,这将起作用。 我已经使用 dll 尝试了同样的事情,但它并不完全相同。 这是我测试的代码:
ListBox1.Items.AddRange(CType(TabControl1.SelectedTab.Controls.Item(0), ScintillaNet.Scintilla).Lines)
很抱歉我问了这么一个愚蠢的问题,但我是ScintillaNet DLL的菜鸟。
任何帮助将不胜感激。
ListBox.Items.AddRange
方法只接受一个Object
数组。 ScintillaNet.Scintilla.Lines
属性是一个ScintillaNet.LinesCollection
对象,而不是一个数组。 因此,您不能将其传递给ListBox.Items.AddRange
方法。
另一方面, RichTextBox.Lines
属性是一个String
数组,因此可以将其传递给ListBox.Items.AddRange
方法。
不幸的是,没有简单的方法可以将ScintillaNet.LinesCollection
对象转换为数组。 您可以使用它的CopyTo
方法将集合复制到数组,但循环遍历集合并单独添加每个集合可能更容易和更有效,如下所示:
For Each i As Line In CType(TabControl1.SelectedTab.Controls.Item(0), ScintillaNet.Scintilla).Lines
ListBox1.Items.Add(i.Text)
Next
请注意,我将i.Text
添加到ListBox
而不仅仅是i
。 正如史蒂夫在下面的评论中LineCollection
地指出的那样, LineCollection
包含一个Line
对象列表。 Line
类上的ToString
方法只输出行索引而不是该行的文本。
基于 Steven Doggart 的回答,使用 AddRange() 而不是 Range() 看起来像这样:
Dim lst As New List(Of String)
For Each i As Line In CType(TabControl1.SelectedTab.Controls.Item(0), ScintillaNet.Scintilla).Lines
lst.Add(i.Text)
Next
ListBox1.Items.AddRange(lst.ToArray)
Dim ListA As New List(Of String)(New String() {"aaa", "bbb", "ccc", "ddd"})
ComboBox1.Items.AddRange(ListA.ToArray)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.