如何只注册一个事件???
zTaskParent.TaskEvent += new TaskEventHandler(tp_TaskEvent);
这里不能用=只能用+=啊,现在出现多次注册同一事件方法的情况,怎么办?
也就是怎么样才能判断这个事件已经有注册了?
zTaskParent.TaskEvent += new TaskEventHandler(tp_TaskEvent);
这里不能用=只能用+=啊,现在出现多次注册同一事件方法的情况,怎么办?
也就是怎么样才能判断这个事件已经有注册了?
zTaskParent.TaskEvent -= new TaskEventHandler(tp_TaskEvent);
zTaskParent.TaskEvent += new TaskEventHandler(tp_TaskEvent);
static void Main(string[] args)
{
MyClass mc = new MyClass();
mc.Handler += (sender, e) => { Console.WriteLine("1"); };
mc.Handler += (sender, e) => { Console.WriteLine("2"); };
mc.Handler += (sender, e) => { Console.WriteLine("3"); };
mc.Test();
} class MyClass
{
private System.ComponentModel.EventHandlerList ehList; public MyClass()
{
ehList = new EventHandlerList();
} public event EventHandler Handler
{
add
{
if (ehList["ojlovecd"] == null)
ehList.AddHandler("ojlovecd", value);
}
remove
{
ehList.RemoveHandler("ojlovecd", value);
}
} public void Test()
{
Delegate d = ehList["ojlovecd"];
if (d != null)
d.DynamicInvoke(null, null); }
}
private void Form1_Load(object sender, EventArgs e)
{ this.button1.GetType().GetEvent("Click").AddEventHandler(this.button1, new EventHandler(button1_Click));
} void button1_Click(object sender, EventArgs e)
{
this.button1.GetType().GetEvent("Click").RemoveEventHandler(this.button1, new EventHandler(button1_Click));
MessageBox.Show("ss");
}