C#事件和委托

use*_*562 2 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();
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*ana 6

你在做什么是正确的.但是使用以下代码行可以分离事件处理程序.

this.TextChanged1 -= new  TextChangedEventHandler1(TextChanged2);
Run Code Online (Sandbox Code Playgroud)

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

TextChanged2(sender, e);
Run Code Online (Sandbox Code Playgroud)