我正在为这里的其他程序员编写几个 UserControl。
一些与 base 同名的 Exposed EventHandlers 被接受
(UserControl CodesCombo -> SelectedValueChanged)
有些不是
(UserControl TextBox -> TextChanged)
我正在编写一个包含文本框的用户控件。我需要向此控件的潜在使用者公开 TextChanged 事件。
我有一个基于 ComboBox 的类似控件,在其中我使用了
public event EventHandler SelectedValueChanged
{
add { cbMain.SelectedValueChanged += value; }
remove { cbMain.SelectedValueChanged -= value; }
}
公开“Change”事件“SelectedValueChanged”,它可以正常工作,没有任何问题。
但是,当我尝试以类似的方式在基于 TextBox 的控件中使用此技术时
public event EventHandler TextChanged
{
add { tbMain.TextChanged += value; }
remove { tbMain.TextChanged -= value; }
}
我收到一条警告消息:
'MyTextBox.TextChanged' hides inherited member 'UserControl.TextChanged'. Use new keyword if hiding was intentional.
我不完全确定消息的含义,除了显而易见的,但我所知道的是我不 - 认为 - 我想隐藏任何东西。我有内部 SelectedValueChanged 和 TextChanged 函数(cbMain_SelectedValueChanged、tbMain_TextChanged),它们可以做一些我需要的事情,但我想允许消费者也获得对文本更改的事件调用,就像它们在基于 ComboBox 中所做的那样。
此外,在测试程序的可用事件列表中,我根本没有得到任何“更改”事件。
我现在通过将事件公开为“TextChange”来解决这个问题
new public event EventHandler TextChange
{
add { tbMain.TextChanged += value; }
remove { tbMain.TextChanged -= value; }
}
这在列表中给了我一个事件并且似乎工作得很好,但我更愿意对此有一个通用的解决方案,因为我们正在为我们的包做更多的控制,我不认为我能得到远离那些只是“关闭”的名字。
知道这条消息真正告诉我什么,以及我如何在内部获得我的事件,同时仍然让用户获得他们的事件?
慕莱坞森
相关分类