在窗体中添加button17,代码如下:
private void button17_Click(object sender, System.EventArgs e)
{
button17.Enabled = false;
button18.Focus();
MessageBox.Show("ok!");
System.Threading.Thread.Sleep(2000);
button17.Enabled = true;
}
当MessaageBox弹出后,button17还是非活性化状态时,再次点击button17,则接着会再出现MessaageBox,也就是button17又响应了单击事件。如何才能做到在button17非活性化状态时点击而不响应单击事件,但是不能添加其他button来控制button17的活性或非活性。

解决方案 »

  1.   

    不知你要做什么。
    我不信你设了button17.Enabled = false;后你还能点button17...
      

  2.   

    因为这句System.Threading.Thread.Sleep(2000);并没有停止2秒
    而是立即往下执行button17.Enabled = true;了~~~~~~所以楼猪做了无用功啦~~
      

  3.   

    “我不信你设了button17.Enabled = false;后你还能点button17...“你可以自己是一下。
    可就算把System.Threading.Thread.Sleep(2000);换成其他处理方法也会出现这样的问题。
      

  4.   

    程序运行到行:System.Threading.Thread.Sleep(2000);时,当前线程被挂起,虽然BUTTON被设为FALSE,但在延时2秒的过程中,WINDOWS的消息队列收到了BUTTON被点击的消息,当延时结束后线程被恢复,button17.Enabled = true;,系统的消息队列里多了一个点击消息,所以系统又认为BUTTON被点击了一次(虽然是Enabled = FALSE),所以系统会再执行一次button17_Click事件,你的方法是不可能回避这个问题的,可以改用TIMER控件来达到延时效果.
      

  5.   

    刚试了下,的确是LZ说的,虽然当时点没反应,但等System.Threading.Thread.Sleep(2000);执行了以后还是会在次弹出messagebox,原因可能就是copall(民工->>席卷天下-包举宇内-囊括四海-并吞八荒!) 说的吧(不是很清楚)
      

  6.   

    为什么
    System.Threading.Thread.Sleep(2000);
    MessageBox.Show("ok!");
    就没事?
      

  7.   

    因为这句System.Threading.Thread.Sleep(2000);并没有停止2秒
    而是立即往下执行button17.Enabled = true;了~~~~~~
    ----------如果没有停止2秒,估计微软要有麻烦了不好意思,没注意你后面的代码发现另一贴子和你的情况差不多,
    http://community.csdn.net/Expert/topic/4659/4659440.xml?temp=.1188776
    你去看看我的回复,我就不在这里再说了。
      

  8.   

    楼上你好!
    我刚看了你的回答,但我现在的问题是不能再添加其他button,连提示message信息都不可以,是否还有其他解决方法?
    谢谢!
      

  9.   

    不能再添加其他button,连提示message信息都不可以
    ---------
    没明白你说的。我没说加messagebox啊。