我正在编写一个源自 UserControl 的自定义控件。其中有一些我想阻止访问的控件(一些文本框,组合框)。只有当用户单击“编辑”按钮时,它们才可用于交互。
我阅读了 KeyPreview ,但它仅适用于表单。我发现将所有事件重定向到一个公共处理程序,检查编辑模式是否过于麻烦。
有没有办法对其他人进行另一个透明控制(Z顺序),这将拦截所有鼠标和按键事件但是正常渲染控件?或者可能有不同的解决方案?
编辑: 我希望在控件上接收覆盖其他事件的鼠标事件。我需要拖放和移动自定义控件。
答案 0 :(得分:2)
您可以在用户控件中编写您的已启用属性并使用它。
private new bool Enabled
{
get { return _enabled; }
set
{
foreach (System.Windows.Forms.Control c in this.Controls)
{
if (c is SomeTypeThatShouldBeExcluded)
continue;
c.Enabled = value;
}
_enabled = value;
}
}