我想实现一个新版本TextBox
,我们称之为它只会在每三次文本更改后FunkyTextBox
引发事件。TextChanged
如果我只想为此引发另一个事件,我们称之为它FunkyTextChanged
,实现很简单:
class FunkyTextBox : TextBox
{
int counter = 0;
int MAX_CHANGES = 3;
public event EventHandler FunkyTextChanged;
public FunkyTextBox()
{
this.TextChanged += (s, e) =>
{
if (++counter < MAX_CHANGES)
return;
counter = 0;
if (FunkyTextChanged != null)
FunkyTextChanged(this, null);
};
}
}
但是这种方法有一个缺点 - 用户会假设使用TextChanged
,这是在单次更改后引发的父版本并且不会考虑订阅FunkyTextChanged
事件。
是否可以为此使用TextChanged
事件?以某种方式向用户隐藏父母的 TextChnagedFunkyTextBox
并用它自己的替换它?