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

时间:2017-01-11 20:44:42

标签: vb.net asterisk

我有一个4位数的扩展名列表,我从服务器中取出

cmd = sshClient.RunCommand("asterisk -x 'sip show peers' | grep -w OK | awk '{print $1}' | awk -F'/' '{print $1}'")
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行

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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