C# 事件和委托(delegate)

标签 c# events delegates

我想分离自定义事件但无法分离。下面我使用 -= 来分离事件。我假设此后,不应调用 TextChanged2 方法,因为我已取消注册该事件。我的理解有误吗?

public delegate void TextChangedEventHandler1(object sender, TextBoxargs ta);
public event TextChangedEventHandler1 TextChanged1;
private void textBox1_TextChanged(object sender, EventArgs e)
{
    this.TextChanged1 -= new  TextChangedEventHandler1(TextChanged2);
    TextChanged2(sender, e);
}

public void TextChanged2(object sender, EventArgs e)
{
    textBox1.Text = textBox1.Text.ToUpper();
}

最佳答案

你做的是对的。但是使用下面的代码行,您可以分离事件处理程序。

this.TextChanged1 -= new  TextChangedEventHandler1(TextChanged2);

但是在第二行你直接调用了函数,所以它调用了textchange2函数:

TextChanged2(sender, e);

关于C# 事件和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004896/

相关文章:

c# - 热拖如何在 Visual Studio 2012 (C Sharp) 中使用变量或方法?

c# - 将文件夹及其内容移动到其他文件夹

c# - 事件参数——它们应该反射(reflect)事件发生时的状态快照还是实时数据?

Angular 2 单击事件导致整个组件重新初始化(丢失状态)

ios - 点击按钮时 UIAlertView 崩溃

ios - 委托(delegate)给正确的同名方法

jquery - 是否可以在 jquery 的委托(delegate)函数中添加多个选择器?

c# - 任务完成源 : When to use SetResult() versus TrySetResult(), 等

c# - 使用 COM 互操作从非托管代码调用托管委托(delegate)

javascript - 在 JavaScript 中同步模糊和点击事件