use*_*682 1 vb.net scintilla listbox-control
下面的代码行将每一行添加到列表框的每个索引中。
ListBox1.Items.AddRange(CType(TabControl1.SelectedTab.Controls.Item(0), RichTextBox).Lines)
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望使用ScintillaNet DLL执行与下面的行相同的功能,那么这是可行的。我已经尝试使用 dll 进行同样的操作,但它并不完全相同。这是我测试的代码:
ListBox1.Items.AddRange(CType(TabControl1.SelectedTab.Controls.Item(0), ScintillaNet.Scintilla).Lines)
Run Code Online (Sandbox Code Playgroud)
很抱歉我问了这么愚蠢的问题,但我是 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
Run Code Online (Sandbox Code Playgroud)
请注意,我添加的是i.Text而ListBox不仅仅是i. 正如史蒂夫在下面的评论中敏锐地指出的那样,它LineCollection包含一个对象列表Line。ToString该类的方法仅Line输出行索引,而不是该行的文本。