控件Enabled属性设成false,怎么还能让它响应事件??

解决方案 »

  1.   

    private void button6_Click(object sender, System.EventArgs e)
    {
    button7.Enabled = false;
    System.Threading.Thread.Sleep(6000);

    button7.Enabled = true;
    } private void button7_Click(object sender, System.EventArgs e)
    {

    MessageBox.Show("aaa");
    }这是代码例子。
    在7enable = false的时候,用鼠标点击,在等到enable=true的时候也会执行showmessage。
    何解???
      

  2.   

    System.Threading.Thread.Sleep(6000);的时间再加大,测试
      

  3.   

    在别的事件里让那个Enable属性变成true ,一个馊主意飘过...
      

  4.   

    你既然要响应,为什么要false呢?
      

  5.   

    我试了试,真是这样,并且button7的响应时间为button6的Click事件方法整个结束后才响应。意思是,如果
    System.Threading.Thread.Sleep(6000);
    button7.Enabled = true;
    System.Threading.Thread.Sleep(1000);//这里再加一秒,刚button7的click为7秒以后响应。是个奇怪的问题。我想,这应该是线程阻塞与消息的关系,也不知.Net是不是有意这样设计,虽然你将button7设为了false,但你在其线种阻塞期间点击了button7,因当前线程中随后使button7设为了true,其消息被延续。如果加入异步,就可以了。把button7=true放在异步中。
    private void button6_Click(object sender, System.EventArgs e)
    {
    button7.Enabled = false;
    System.Threading.Thread.Sleep(6000);
    System.EventHandler h = new EventHandler(button7Enable);
    h.BeginInvoke(null,null,null,null);
    }
    private void button7Enable(object sender,System.EventArgs e)
    {
    System.Threading.Thread.Sleep(100);
    button7.Enabled = true;
    }