c#showdialog返回整行

时间:2017-08-26 01:24:26

标签: c# windows vba

电贺。

我正在使用.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");
            }
        }
    }

2 个答案:

答案 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.....