读书人

。多个 click +=连接起来的事件链。用

发布时间: 2013-01-11 11:57:35 作者: rapoo

。。多个 click +=连接起来的事件链。。。用timer调用第一个后,他不会调用剩下的,咋办?
button1.click += 事件1
button1.click += 事件2

如果是点击界面上的button,他会继续往下走。。。多个 click +=连接起来的事件链。用timer调用第一个后,他不会调用剩上的,咋办

但是我现在想做成自动的,用timer去自动点击。。

结果就发现调用button1_click(sender,e)后,事件1和事件2都不会被调用。多个 click +=连接起来的事件链。用timer调用第一个后,他不会调用剩上的,咋办。。

有点郁闷额。。。多个 click +=连接起来的事件链。用timer调用第一个后,他不会调用剩上的,咋办
貌似 你点击按钮的时候 会把你按钮绑定的事件都挨个的执行
可是 你自动调用的却只调用了一个而已
[解决办法]

using System;
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");
}
}
}


[解决办法]
引用:
C# code
?



12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

using System; using System.Collections.Generic; using System.Linq; using System.Tex……

支持这个,把所有的命令按钮的单击事件都绑定到同一命令按钮的单击事件,再执行单击事件
[解决办法]
http://bbs.csdn.net/topics/370015927
[解决办法]
你需要的是 btn.PerformClick(); 之类的方法调用

读书人网 >C#

热点推荐