在文本框代码错误中显示文本文件中的随机行

时间:2015-06-10 10:56:26

标签: c# .net

我正在构建一个程序,在按钮单击时显示从文本文件到文本框的随机行。

我只是C#的初学者所以我不确定我哪里出错了。

private void startButton_Click(object sender, EventArgs e)
{
   int lineCount = File.ReadAllLines(@"D:...\QUESTIONS.text").Length;
   Random rnd = new Random();
   int randomLineNum = rnd.Next(lineCount);
   int indicator = 0;
   using (var reader = File.OpenText(@"D:...\QUESTIONS.text"))
   {
       while (reader.ReadLine() != null)
       {
           if (indicator == randomLineNum)
           {
               questionBox.Text = reader;
               break;
           }
           indicator++;
       }
   }
}

你能帮我弄清楚这段代码应该去哪里。

提前感谢您的帮助! :)

2 个答案:

答案 0 :(得分:2)

您可以删除代码中的许多复杂情况。

private Random r = new Random();

private void startButton_Click(object sender, EventArgs e)
{
    var lines = File.ReadAllLines(@"D:...\QUESTIONS.text");
    questionBox.Text = lines[r.Next(lines.Length)];
}
  1. 在函数范围之外定义随机变量并重用它 每次都是一个已知的最佳实践。
  2. 为什么要两次阅读文件?您使用ReadAllLines阅读了一次,然后再使用StreamReader
  3. 阅读

答案 1 :(得分:0)

这应该这样做:

private void startButton_Click(object sender, EventArgs e)
{
    var lines = File.ReadAllLines(@"D:...\QUESTIONS.text");
    int lineCount = lines.Length;
    Random rnd = new Random();
    int randomLineNum = rnd.Next(lineCount);
    questionBox.Text = lines[randomLineNum];
}

无需两次读取同一文件,因此请将行保留在局部变量中以便以后访问。