. net窗体-禁用控件丢失事件
本文关键字:失事 事件 控件 窗体 net | 更新日期: 2023-09-27 17:54:28
我有一个禁用的from元素,我想在双击时启用它。
问题是DoubleClick
处理程序只在Foo.Enabled = True
时被调用。当它被禁用时,处理程序不会接收到双击事件。
this.Foo.DoubleClick += new System.EventHandler(this.Foo_OnDoubleClick);
// Handler
private void Foo_OnDoubleClick(object sender, EventArgs e)
{
Console.WriteLine("Double click");
}
有什么解决办法吗?
创建自己的控件,继承其基础控件(FOO)并覆盖Enable
行为。这样,你就可以使它按照你所希望的方式运行。
例子:
public class MyControl : Button //Example control
{
//Override and/or implement what you need in this control
public MyControl()
{
}
protected override void OnEnabledChanged(EventArgs e)
{
// Do whatever you wish to do
}
}
我仍然希望防止用户在禁用时输入值。
你的问题听起来像是你想把它应用到任何控件,但是你的评论听起来像是你想把它应用到TextBox
。
如果后一种情况为真,则将TextBox.ReadOnly
属性设置为True
,而不是禁用该控件。
用户将无法编辑该值,但双击事件仍将触发。
你应该处理鼠标双击事件的父(所有双击到启用父),然后通过检查事件返回的鼠标位置针对每个禁用的控制矩形,你可以确定哪个控件被点击。