我一个button的click事件要执行5秒钟左右(中间有延时) ,
为了防止用户连续点击时产生错误,在事件开始时 button1.Enable = false ;
最后事件结束时 button1.Enable = ture ;
但在button不可用状态下如果再连续点击几个鼠标 , 等上次事件执行完后还会执行下一次的。
为了防止用户连续点击时产生错误,在事件开始时 button1.Enable = false ;
最后事件结束时 button1.Enable = ture ;
但在button不可用状态下如果再连续点击几个鼠标 , 等上次事件执行完后还会执行下一次的。
{
this.button1.Click -= new EventHandler(button1_Click);
//这里进行你的处理就是了
this.button1.Click += new EventHandler(button1_Click);
}
{
button1.Enabled = false;
Thread.Sleep(2000);
richTextBox1.AppendText(Environment.TickCount.ToString() + "\r\n");
Application.DoEvents(); //关键语句
button1.Enabled = true;
}
當點擊button時,將隱藏的Button顯示﹐覆蓋在上面,執行完成后再隱藏,就可以解決了.
所以点击消息还会被处理
上面的代码就是将队列里的消息处理掉后才打开按钮的Enabled
高明﹐佩服!!!
但
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
Application.DoEvents(); //关键语句 , 放到延时前面就不行 。
Thread.Sleep(2000);
richTextBox1.AppendText(Environment.TickCount.ToString() + "\r\n");
button1.Enabled = true;
}