把Button设置为不可用时为啥还可以响应单击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把Button设置为不可用时为啥还可以响应单击事件相关的知识,希望对你有一定的参考价值。

单击事件不一定只由button触发,比如你可以在某个textbox的change事件里调用button的单击事件
或者说,单击事件本身只是一个方法,单击button触发只是因为将这个方法绑定在了button的Click事件上。追问

private void button1_Click(object sender, EventArgs e)
button1.Enabled = false;
this.label1.Text += "--123";
for (int i = 3000; i > 0; i--)
for (int j = 300000; j > 0; j--)
;
button1.Enabled = true;

追答

这样只是在界面上禁止了button的点击,但是这个方法本身并没有被禁用啊
button1.Enabled = false; 之后的语句也依然要运行完才能结束方法啊

再说一次,enabled只是设置控件不响应鼠标、键盘的动作,不影响事件所绑定的方法的执行

追问

我的意思是,按钮变灰后,再点击按钮还是能执行 按钮事件,不太合适吧,已经变灰啦 怎么还能执行那

追答

应该不能了才对
但是刚才没结束的那个方法,还得继续

参考技术A 你这个是单线程的,你虽然把enable变灰,但是界面上不一定会改变,所以还可以单击的,你可以再开一个线程把button变灰

为啥 Gtk 的 button_press_event 不会收到单击左键?

【中文标题】为啥 Gtk 的 button_press_event 不会收到单击左键?【英文标题】:Why won't Gtk's button_press_event receive single left clicks?为什么 Gtk 的 button_press_event 不会收到单击左键? 【发布时间】:2009-06-30 18:19:43 【问题描述】:

我正在尝试在 Gtk::Notebook (gtkmm) 中设置一个添加选项卡按钮。我通过将像素图绘制到计算位置来做到这一点——效果很好。但是,当尝试为其接收事件时,我无法单击左键。单中间和单右提供新闻和发布事件,双左只提供新闻事件,但单左不注册任何东西。如何正确接收事件?

【问题讨论】:

您是要捕捉按钮还是图像的点击事件?左键单击可能会被按钮捕获并且永远不会传播到图像,右键单击可能只是传递。 没有按钮 -- 图片位于选项卡右侧空白区域的顶部。 【参考方案1】:

您是否在GtkEventBox 中绘制了您的图像?

【讨论】:

我手动绘制图像的原因是因为它需要位于另一个小部件之上。有没有一种简单的方法可以将 EventBox 放在特定的像素位置? 那将是一个 GtkFixed 小部件。

以上是关于把Button设置为不可用时为啥还可以响应单击事件的主要内容,如果未能解决你的问题,请参考以下文章

QT怎么设置单元格不响应鼠标单击事件?

NGUI_Button

asp.net中没用js绑定回车事件,可是为啥在文本框中输入内容后按回车键还会触发该事件?求大神解释下!

制作按钮(Button)

为啥 Gtk 的 button_press_event 不会收到单击左键?

android 如何设置按钮 不可点击