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

本文关键字:控件 隐藏 另一个 UserControl | 更新日期: 2023-09-27 18:18:24

我正在编写一个自定义控件派生自UserControl。在它是一些控件,我想防止被访问(一些文本框,组合框)。只有当用户单击"编辑"按钮时,它们才可用于交互。

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

是否有任何方法可以将另一个透明控件放在其他控件上(Z顺序),这将拦截所有鼠标和按键事件,但正常呈现控件?或者可能有不同的解决方案?

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

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

你可以在你的UserControl中写入你的Enabled属性并使用它

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