. 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");
}

有什么解决办法吗?

. net窗体-禁用控件丢失事件

创建自己的控件,继承其基础控件(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,而不是禁用该控件。

用户将无法编辑该值,但双击事件仍将触发。

你应该处理鼠标双击事件的父(所有双击到启用父),然后通过检查事件返回的鼠标位置针对每个禁用的控制矩形,你可以确定哪个控件被点击。