c#如何将文本文件的行分成两个相等的部分,并将它显示在两个不同的列表框中

时间:2014-04-07 13:01:40

标签: c# .net winforms listbox

我正在开发一个程序,用户可以上传带有链接列表的文本文件,上传成功后,文本文件的行分为两个列表框,其中listbox1包含文本文件中50%的行,listbox2包含剩下50%。

private void readFile()
    {
        int linenum = 1;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "Text Files|*.txt";
        openFileDialog1.Title = "Select a Text file";
        openFileDialog1.FileName = "";
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            string file = openFileDialog1.FileName;

            string[] text = System.IO.File.ReadAllLines(file);

            foreach (string line in text)
            {
                if (linenum <= 150)
                {
                    listBox1.Items.Add(line);
                }
                else
                {
                    listBox2.Items.Add(line);
                }

                linenum++;


            }


        }

当我知道文本文件中的行的确切行数时,此代码工作正常,但是当文本文件包含较少的行时,它会引发异常。我试图将文件分成两个相等的部分并将其显示在两个列表框中。请给我任何建议或意见。

2 个答案:

答案 0 :(得分:5)

使用Length数组的text - 属性。它的值等于数组中成员(行)的数量:

string[] text = System.IO.File.ReadAllLines(file);
int current = 0;

foreach (string line in text)
{
   if (current <= text.Length / 2)
   {
      listBox1.Items.Add(line);
   }
   else
   {
      listBox2.Items.Add(line);
   }

   current++;
}

答案 1 :(得分:0)

        var textfile = new string[]{"1","2","3","4"};
        List<string> listBox1 = new List<string>();
        List<string> listBox2 = new List<string>();
        listBox1.AddRange(textfile.Take(textfile.Length / 2));
        listBox2.AddRange(textfile.Skip(textfile.Length / 2).Take(textfile.Length / 2));