日期:2014-05-18  浏览次数:21204 次

关于C#中的委托的问题,高手进,低手勿扰 ------------------ 100分求解
C# code

protected void Button2_Click(object sender, EventArgs e)
{ 
   TestClick tc = Button3_Click;
   tc(sender, e);
}
public delegate void TestClick(object sender, EventArgs e);

protected void Button3_Click(object sender, EventArgs e)
{
   Response.Write("button3 clicked");
}


如上代码!我可以用委托来实现,点击BTN2时执行BTN3的事件.现在的问题是:假设有N个按钮点击事件.如果我现在点击BTN2时不确定要执行哪个按钮的事件(要通过程序自己判断,请问如何实现?也就是说:
C# code

TestClick tc ;
if (a==1)
tc= ??????(Button3_Click);
if (a=2)
tc= ??????(Button4_Click);
tc(sender, e);


这里的Button3_click 是Void类型,要定义什么类型的变量来对取得这个值.(我看控件的事件属性里比如ONCLICK事件,可以选择哪个事件.但是当我这样做时却不行:
EventHandle aa=Button3_click;
tc=aa;

EventArags aa= Button3_click;
tc=aa;
---------------------------------------
求教高手,分不够再加!


------解决方案--------------------
o,这错了,多打了个invork

private void btn_Click(object sender, eventArgs e) 
 { 
if(BtnClick != null) BtnClick(sender, e); 
 } 

------解决方案--------------------
匿名方法(C#2.0以上)

BTN2.Click += delegate{ButtonClick(a);}

void ButtonCLick(a) {
switch(a) {...}
}


顺便说一下:这是很基础的问题,熟练C#语法的都应该会,而不是所谓的“高手”专利!