abo*_*u00 0 .net c# events user-controls winforms
我正在研究一个派生自UserControl该类的类.此类添加的属性[Browsable(false)]和[EditorBrowsable(EditorBrowsableState.Never)]该事件TextChanged是从继承的Control类.
我的新控制与a相当TabPage; 它在另一个可以与之相当的类中使用TabControl.这很重要的原因是因为这意味着我需要控件的用户才能访问此事件.在.NET反射器中,我们看到TabPage控件(继承自Panel,也添加了这两个属性)使用以下代码"覆盖"这两个属性:
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public event EventHandler TextChanged;
Run Code Online (Sandbox Code Playgroud)
我把它复制到我的项目中,据我所知,它可以正常工作,但编译器给了我一个警告:"'System.Windows.Forms.Frameset.FunctionPanel.TextChanged'隐藏了继承的成员'System.Windows.Forms. UserControl.TextChanged'.如果想要隐藏,请使用new关键字." 我不想隐藏旧的TextChanged事件; 我只是想删除该Browsable(false)属性.虽然隐藏旧事件似乎可以在表面上完成工作,但这似乎是一种丑陋而迂回的做法.有没有办法在不隐藏旧事件的情况下做到这一点?如果没有,有没有办法让编译器停止给我一个警告?
在此先感谢,布兰登
您可以尝试以下方法.在所有可能的情况下都应该是安全的:
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public new event EventHandler TextChanged {
add {
base.TextChanged += value;
}
remove {
base.TextChanged -= value;
}
}
Run Code Online (Sandbox Code Playgroud)