电贺。
我正在使用.ShowDialog()调用一个Window,并从文本框中返回一些行。
这些行返回到List<>,但返回的文本框中的每个字符都被分配给它在List<>中的索引值。
我基本上想要将文本框中的整行添加到List<>中它自己的索引值中。
实施例: 我在从ShowDialog();
调用的文本框中输入以下内容123456 87564 125
如何将文本框中的每一行添加到列表中自己的索引?
这就是我现在所拥有的。 (在我输入这些值的文本框窗口中没有代码)(我意识到我把它拼写为imput ...)当我调试并查看pos List<>时,每个字符都有它自己的索引ID ..
private void GetPOs()
{
MultiLineImput getPOList = new MultiLineImput();
getPOList.ShowDialog();
foreach (char po in getPOList.listOfPOs.Text)
{
pos.Add(po.ToString());
}
if (pos.Count > 0)
{
string a = String.Join("", pos);
MessageBox.Show(a, "POs to Process");
}
else
{
if (!getPOList.wasCanceled.Equals(1))
{
MessageBox.Show("No values were passed", "Warning");
}
}
}
答案 0 :(得分:0)
您正在迭代Text
属性的字符,因此每个字符都会转换为字符串并单独添加到列表中。
我不确定你的意思是添加整个“线”。在您的示例中,只有一行,因此您可以重写此循环
foreach (char po in getPOList.listOfPOs.Text)
{
pos.Add(po.ToString());
}
简单地
pos.Add(getPOList.listOfPOs.Text);
如果您打算在条目“123456”,“87564”,“125”中拆分此行,您可以执行以下操作:
foreach (string po in getPOList.listOfPOs.Text.Split(' '))
{
pos.Add(po);
}
如果你的文本框确实支持多行输入,你可以按Environment.NewLine
分割,如下所示:
foreach (string po in getPOList.listOfPOs.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None))
{
pos.Add(po);
}
答案 1 :(得分:0)
如果迭代字符串,迭代器将一次拉出一个字符。它不知道换行是什么。
我建议你通过换行来打破字符串,然后迭代结果,如下所示:
MultiLineInput getPOList = new MultiLineInput();
getPOList.ShowDialog();
var wholeText = getPOList.listOfPOs.Text;
var lines = wholeText.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
foreach (string po in getPOList.listOfPOs.Text)
{
pos.Add(po);
}
//Etc.....