我正在尝试创建一个小程序,它将从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);
有谁知道为什么会这样?
答案 0 :(得分:2)
在button1_Click_1
中,您声明了一个局部变量max
,它会影响您的实例变量this.max
。在max
方法中使用timer1_Tick
时,它引用从未分配给的实例变量。
将button1_Click_1
中的作业更改为
max = richTextBox1.Lines.Count();
应该有帮助。