我有一个事件是这样,我要循环一组数字,并且显示他的值
private void button1_Click(object sender, System.EventArgs e)
{
for (int i = 0 ; i < 100000; i++){
this.label1.Text = i.ToString();
Application.DoEvents();
}
}
然后,我有另外一个事件就是让上一个事件中的计数器马上停下来,并且等于一个特定的值,
private void button2_Click(object sender, System.EventArgs e)
{
this.label1.Text = "2";
}
可是,第二个事件必须得等地一个事件停止后才能生效,也就是我才能看到label1。text=2,怎么解决这个问题?
private void button1_Click(object sender, System.EventArgs e)
{
for (int i = 0 ; i < 100000; i++){
this.label1.Text = i.ToString();
Application.DoEvents();
}
}
然后,我有另外一个事件就是让上一个事件中的计数器马上停下来,并且等于一个特定的值,
private void button2_Click(object sender, System.EventArgs e)
{
this.label1.Text = "2";
}
可是,第二个事件必须得等地一个事件停止后才能生效,也就是我才能看到label1。text=2,怎么解决这个问题?
加一个判断在第一个事件的循环里, for (int i = 0 ; i < 100000; i++){
if (stop) retrun; this.label1.Text = i.ToString();
Application.DoEvents();
}
在第二个事件里写 private void button2_Click(object sender, System.EventArgs e)
{
stop=true;
this.label1.Text = "2"; }
delegate void del(int x);
private void FormStart()
{
for (int i = 0; i <= 10000; i++)
{
object obj = i;
Invoke(new del(LabelShow), i);
} }
private void LabelShow(int i)
{
label1.Text = i.ToString();
} private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(FormStart));
thread.Start();
//Application.Exit();
} private void button2_Click(object sender, EventArgs e)
{
if (thread != null)
{
if (thread.ThreadState == ThreadState.Running)
{
thread.Abort();
}
label2.Text = "2";
thread = null;
} }
}