弱弱的问题

teiunhi 2009-11-24 04:54:02
当button 在 enable = false 时,点了按钮, 当恢复到
enable = true时, 按钮事件 仍然会被触发, 如何避免 button2的事件被触发???

例如'

private void button1_Click(object sender, EventArgs e)
{
button2.Enabled = false;
for (long i = 0; i < 500000000; i++)
{
;//在这段时间内, 点了 button2, 当 button2.Enabled = true后, 弹出"ssssssssss"
}
button2.Enabled = true;
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("ssssssssss");
}
...全文
138 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
teiunhi 2009-11-25
  • 打赏
  • 举报
回复
刚做了个测试 例子,最简单的代码
private void button1_Click(object sender, EventArgs e)
{
button2.Enabled = false;
for (long i = 0; i < 500000000; i++)
{
;
}
button2.Enabled = true;
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("ssssssssss");
}
goldenbull9 2009-11-25
  • 打赏
  • 举报
回复
Enable设为false之后,肯并不会响应点击事件的,更不会说延时到Enable变成true再触发事件,检查一下你的代码吧,很可能是别的问题
teiunhi 2009-11-25
  • 打赏
  • 举报
回复
l274747948
判断啊!
---------------------
怎么判断,我就是想在一个方法执行过程中,让其他所有的按钮都不起作用,包括他们的事件,
当方法执行完后, 按钮及他们的事件在恢复可用状态.

但是现在的情况确实,在方法执行过程中不管是,设置Enable还是Visible ,只要你在按钮的位置上点了按钮,
他不会马上执行 click事件, 等到方法结束后在触发 click事件,觉得不可理解,为什么不马上触发???
l274747948 2009-11-25
  • 打赏
  • 举报
回复
判断啊!
teiunhi 2009-11-25
  • 打赏
  • 举报
回复
ctwei86
-----------------
我试了Visible的属性, 即使是设置成 button.Visible = false,
在按钮看不见的情况下,点按钮所在的位置,当按钮在次显示时,还会弹出"ssssssssss"

到底是怎么会事啊, 一个按钮事件 这么麻烦么??高手出来看看啊





ctwei86 2009-11-25
  • 打赏
  • 举报
回复
如果不影响美观和业务逻辑,可以用Button的Visible属性控制按钮的隐藏和显示,这样就不会有那么多麻烦了。
teiunhi 2009-11-25
  • 打赏
  • 举报
回复
zhujiazhi
--------------------

还是不行,还是会弹出"ssssssssss"
感觉就是,点了button2之后, 事件不是马上触发,而是一直在等,直到 button2.Enable = true;之后在触发,到底是怎么回事啊,

刚开始接触c# 感觉这个问题应该挺简单的,怎么就弄不明白呢?
teiunhi 2009-11-25
  • 打赏
  • 举报
回复
谢谢各位了,虽然我还不是明白,但是我已经用别的方法解决了.
lazyboysqaz 2009-11-25
  • 打赏
  • 举报
回复
这个是有关WINDOWS消息机制,你到网上查下这方面资料,你就能明白了
teiunhi 2009-11-24
  • 打赏
  • 举报
回复
谢谢阿,明天去公司试试。
zhujiazhi 2009-11-24
  • 打赏
  • 举报
回复
private void button2_EnabledChanged(object sender, EventArgs e)
{
if(button2.Enabled)
{
button2.Click += new EventHandler(button2_Click);
}
else
{
button2.Click -= new EventHandler(button2_Click);
}
}
teiunhi 2009-11-24
  • 打赏
  • 举报
回复
zhujiazhi

button2.Click -= new EventHandler(button2_Click);
-----------------------------------------

这个我试了, 如果加上这句的话, 在 button2 .Enable= true;后, 点button2 也不触发事件了,
我要的是, 只在button2.Enabled = false; 这段其间内,屏蔽button2的按键事件,
当 button2 .Enable= true;后,在点button2正常弹出"ssssssssss"
zhujiazhi 2009-11-24
  • 打赏
  • 举报
回复
button2.Click -= new EventHandler(button2_Click);

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧