button1.click += 事件1
button1.click += 事件2如果是点击界面上的button,他会继续往下走。。但是我现在想做成自动的,用timer去自动点击。。结果就发现调用button1_click(sender,e)后,事件1和事件2都不会被调用。。有点郁闷额。。
button1.click += 事件2如果是点击界面上的button,他会继续往下走。。但是我现在想做成自动的,用timer去自动点击。。结果就发现调用button1_click(sender,e)后,事件1和事件2都不会被调用。。有点郁闷额。。
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.ComponentModel;namespace ConsoleApplication1
{
class Button
{
private event EventHandler click;
public event EventHandler Click
{
add { click += value; }
remove { click -= value; }
} public void foo() { click(this, new EventArgs()); }
}
class Program
{
static void Main(string[] args)
{
Button btn = new Button();
btn.Click += new EventHandler(btn1_Click1);
btn.Click += new EventHandler(btn1_Click1);
btn.Click += new EventHandler(btn1_Click2);
btn.Click += new EventHandler(btn1_Click3);
Console.WriteLine("raise event by itself:");
btn.foo();
Console.WriteLine("raise event manually:");
EventHandler eh = btn.GetType().GetField("click", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(btn) as EventHandler;
eh.Invoke(null, new EventArgs());
} static void btn1_Click1(object sender, EventArgs e)
{
Console.WriteLine("1");
} static void btn1_Click2(object sender, EventArgs e)
{
Console.WriteLine("2");
} static void btn1_Click3(object sender, EventArgs e)
{
Console.WriteLine("3");
}
}
}
嗯,我就是想他挨个执行。。但是现在我调用开头的那个,他却不会继续往下调用了。
和这个类似,就是调用完btn的click后(虽然现在你没有写),只有btn的click事件被执行了,其他的btn1_Click1,btn1_Click2,btn1_Click3都不会被执行
btn1_Click2(null,null)
btn1_Click3(null,null)
oh! so good!就是这个,太感谢了。。