gpt4 book ai didi

c# - 用我自己的替换父类事件

转载 作者:太空狗 更新时间:2023-10-30 01:06:33 25 4
gpt4 key购买 nike

我想实现一个新版本的 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 事件?要以某种方式向 FunkyTextBox 的用户隐藏父级的 TextChnaged 并将其替换为自己的?

最佳答案

我会选择类似的东西:

    class FunkyTextBox : TextBox
{
int counter = 0;
int MAX_CHANGES = 3;

public FunkyTextBox()
{
}

protected override void OnTextChanged(EventArgs e)
{
if (++counter < MAX_CHANGES)
return;
counter = 0;
base.OnTextChanged(e);
}
}

关于c# - 用我自己的替换父类事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com