我正在研究一个派生自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)
属性。虽然隐藏旧事件似乎可以在表面上完成工作,但这似乎是一种丑陋而迂回的做法。有没有办法在不隐藏旧事件的情况下做到这一点?如果没有,有没有办法让编译器停止向我发出警告?
提前致谢, 布兰登
答案 0 :(得分:5)
您可以尝试以下操作。在所有可能的情况下都应该是安全的:
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public new event EventHandler TextChanged {
add {
base.TextChanged += value;
}
remove {
base.TextChanged -= value;
}
}