在c#中的文本框中读取文本和显示的问题

时间:2017-09-08 10:17:59

标签: c#

我的目的是使用File.ReadAllText逐行读取文本文件。之后,我将检查每个字符串数组是否包含我期望的关键字,我将把整个字符串输出并显示在文本框中。所以这是我的代码:

        OpenFileDialog fopen = new OpenFileDialog();
        fopen.Filter = "(All type)|*.*";
        fopen.ShowDialog();
        if(fopen.FileName != "")
        {
            textBox1.Text = fopen.FileName;
            string save = fopen.FileName;
            string save1 = save.Split('.')[0];
            //string readtext = File.ReadAllText(save);
            //string[] readtext1 = readtext.Split('\n');
            string[] readline = File.ReadAllLines(save);
            int lines = readline.Count();
            textBox2.Text = readtext;

            for (int i = 0; i < lines; i++ )
            {
                if (readline[i].Contains("CPL"))
                {                    
                    int len = readline[i].Length;
                    textBox3.Text = readline[i].Substring(2, len - 4);
                    textBox3.AppendText(Environment.NewLine);
                }

            }

问题是:如果输入文件看起来像

<>something<>
<>something1<>
<>something2<>
<>something3CPL<>
<>something4CPL<>
<>something5CPL<>

输出始终只是最后一个字符串数组。 (这里是5CPL)。 我的期望是什么

something3CPL
something4CPL
something5CPL

有人能告诉我我的代码有什么问题吗? 谢谢。

4 个答案:

答案 0 :(得分:2)

您每次迭代都会在文本框中指定(覆盖)文本,因此它只保存您从文件中获取的最后一个值:

textBox3.Text = readline[i].Substring(2, len - 4);

相反,使用与Environment.Newline

相同的技术(追加)
textBox3.AppendText(readline[i].Substring(2, len - 4));

这将继续根据需要将新值添加到文本框现有文本的末尾。

答案 1 :(得分:1)

您需要追加每个文本,而不是设置每次迭代中的文本:

textBox3.AppendText(readline[i].Substring(2, len - 4));

答案 2 :(得分:0)

可以取代

textBox3.Text = readline[i].Substring(2, len - 4);

使用

textBox3.Text += readline[i].Substring(2, len - 4);

答案 3 :(得分:0)

作为文本框,您无法垂直查看结果。

无论如何这是解决方案:

    OpenFileDialog fopen = new OpenFileDialog();
    fopen.Filter = "(All type)|*.*";
    fopen.ShowDialog();
    if(fopen.FileName != "")
    {
        textBox1.Text = fopen.FileName;
        string save = fopen.FileName;
        string save1 = save.Split('.')[0];
        //string readtext = File.ReadAllText(save);
        //string[] readtext1 = readtext.Split('\n');
        string[] readline = File.ReadAllLines(save);
        int lines = readline.Count();
        textBox2.Text = readtext;

        for (int i = 0; i < lines; i++ )
        {
            if (readline[i].Contains("CPL"))
            {                    
                int len = readline[i].Length;
                textBox3.Text += (readline[i].Substring(2, len - 4) + " ");
            }

        }