VB.NET 文本框到列表框换行

VB.NET textbox to listbox new line

我有一个从我的服务器中提取的 4 位数分机列表

cmd = sshClient.RunCommand("asterisk -x 'sip show peers' | grep -w OK | awk '{print }' | awk -F'/' '{print }'")
TextBox1.Text = cmd.Result

TextBox1 确实填满了扩展名列表,但它们都在 1 行中

(顺便说一句,如果我将它从 TextBox1 更改为 Label1,那么我会将它们放在不同的行中)

然后,使用 button2(将列表放入 ListBox)我有

Dim ext As String
ext = TextBox1.Text
ListBox1.Items.Add(ext)

但我得到的列表只有 1 项且没有空格(无论是来自 TextBox 还是 Label)

我尝试添加

If TextBox1.Text.Length > 4 Then TextBox1.Text = TextBox1.Text.Insert(4, Environment.NewLine)

但它只为前 4 位数字(1 个扩展名)添加了一个新行,其余的在 1 行中

有什么想法吗?

谢谢

答案会有所不同,具体取决于您是否使用 WinForms、WPF 等 - 我假设是 WinForms。

检查您的文本框是否设置为 Multiline = true - 如果没有,这可能会解决您的第一个问题。但更根本的是,@LarsTech 走在正确的轨道上。将 cmd.Result 分配给一个新的字符串变量(而不是直接分配给 TextBox1.Text),然后使用 String.Split() 将其拆分为一个字符串数组,然后循环遍历数组,分别将每个变量分别添加到您的 ListBox 中。无论您如何处理换行符,您都无法使用单个 Items.Add 语句将多个项目放入列表框中。

如果这就是您的循环所做的全部,那么您可以使用 ListBox.AddRange() 一次添加整个数组。

由星号 return 编辑的字符串数据可能由换行符分隔(ASCII 值为 10)。在 Chr(10) 上拆分 return 字符串并使用 .AddRange(ext) 函数将所有项目添加到列表框:

ListBox1.Items.AddRange(ext.Split(New Char() {Chr(10)}, StringSplitOptions.RemoveEmptyEntries))