将属性添加到基本事件

时间:2012-02-21 00:25:16

标签: c# .net winforms events user-controls

我正在研究一个派生自UserControl类的类。此类将属性[Browsable(false)][EditorBrowsable(EditorBrowsableState.Never)]添加到从TextChanged类继承的事件Control

我的新控件与TabPage相当;它在另一个与TabControl相当的类中使用。这很重要的原因是因为这意味着我需要控件的用户才能访问此事件。在.NET反射器中,我们看到TabPage控件(继承自Panel,它也添加了这两个属性)使用以下代码“覆盖”这两个属性:

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public event EventHandler TextChanged;

我将它复制到我的项目中,据我所知它可以正常工作,但编译器给了我一个警告:“'System.Windows.Forms.Frameset.FunctionPanel.TextChanged'隐藏继承的成员'System.Windows .Forms.UserControl.TextChanged'。如果想要隐藏,请使用new关键字。“我不想隐藏旧的TextChanged事件;我只想删除Browsable(false)属性。虽然隐藏旧事件似乎可以在表面上完成工作,但这似乎是一种丑陋而迂回的做法。有没有办法在不隐藏旧事件的情况下做到这一点?如果没有,有没有办法让编译器停止向我发出警告?

提前致谢, 布兰登

1 个答案:

答案 0 :(得分:5)

您可以尝试以下操作。在所有可能的情况下都应该是安全的:

    [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    public new event EventHandler TextChanged {
        add {
            base.TextChanged += value;
        }
        remove {
            base.TextChanged -= value;
        }
    }