使用另一个控件隐藏UserControl中的子控件

时间:2011-12-21 12:29:08

标签: c# winforms user-controls

我正在编写一个源自 UserControl 的自定义控件。其中有一些我想阻止访问的控件(一些文本框,组合框)。只有当用户单击“编辑”按钮时,它们才可用于交互。

我阅读了 KeyPreview ,但它仅适用于表单。我发现将所有事件重定向到一个公共处理程序,检查编辑模式是否过于麻烦。

有没有办法对其他人进行另一个透明控制(Z顺序),这将拦截所有鼠标和按键事件但是正常渲染控件?或者可能有不同的解决方案?

编辑: 我希望在控件上接收覆盖其他事件的鼠标事件。我需要拖放和移动自定义控件。

1 个答案:

答案 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;
            }
        }