随机min'minValue'不能大于'maxValue'

时间:2014-03-02 19:57:28

标签: c#

我正在尝试创建一个小程序,它将从richtextbox中选择一个随机行并将其打印在标签上。

我还尝试制作一个计时器,它会在标签停止前显示标签上的随机行。

但是当我运行程序时它会给我这个错误信息:

  

随机min'minValue'不能大于'maxValue'

这是我的代码:

public partial class Form1 : Form
{

    private int ran;
    private int ranP;
    private int max;
    Random rnd = new Random();
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click_1(object sender, EventArgs e)
    {

        int max = richTextBox1.Lines.Count();
        int ranP = rnd.Next(1, max);
        int ran = 0;
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        label2.Text = "The Winner is: " + richTextBox1.Lines[ranP];
        ran = rnd.Next(1, 11);
        ranP = rnd.Next(1, max);
        if(ran == 11){
            timer1.Enabled = false;
        }
    }
}

错误来自我的计时器中的这一行:

  

ranP = rnd.Next(1,max);

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

button1_Click_1中,您声明了一个局部变量max,它会影响您的实例变量this.max。在max方法中使用timer1_Tick时,它引用从未分配给的实例变量。

button1_Click_1中的作业更改为

max = richTextBox1.Lines.Count();

应该有帮助。