窗口内有一个Button1,双击后自动生成Button1_Click(object sender, EventArgs e)事件结构框架。在我的程序代码中既有要求用户直接点击这个Button1来执行Click事件中的代码,也有在程序中的某处通过语句如:Button1_Click(sender, e); 来执行该事件代码。我希望Button1_Click()能识别到底是人为通过点击Button1执行的呢还是在程序的某处通过Button1_Click(sender, e); 执行的代码,以便在Button1_Click()事件代码中作出不同的处理。形象的表示如下:private void Button1_Click(object sender, EventArgs e);
{
......
......
if (手工点击按钮进入的)
{
......}
else //通过 Button1_Click(sender, e); 进入的
{
......}
......
......
}要怎样才能实现上述功能呢?给(object sender, EventArgs e)再加一个参数?具体怎么解决请教各位高手,谢谢!
{
......
......
if (手工点击按钮进入的)
{
......}
else //通过 Button1_Click(sender, e); 进入的
{
......}
......
......
}要怎样才能实现上述功能呢?给(object sender, EventArgs e)再加一个参数?具体怎么解决请教各位高手,谢谢!
if (sender == null)
{
//调用(null,null)
}
else
{
//手工
}
人为点击时object sender, EventArgs e,由于事件驱动的机制,所以这两个都是不为空的
这样你可以在Click方法内判断sender是否为null来加以区分
private void Button1_Click(object sender, EventArgs e);
{
btn_click(sender,e,1);
}
private void btn_click(object sender, EventArgs e,int sendType)
{
if(sendType==1)
{
.......//用户点击按钮
}
else(sendType==2)
{
......//方法调用
}
}
string strObject="我是人";
Button1_Click(strObject, null);private void Button1_Click(object sender, EventArgs e);
{
if (//用sender.tostring=我是人或者e=null判断)
{
}
else
{
}}
{
//调用(null,null)
}
else
{
//手工
}
public void DoSomething()
{
}按钮单击事件,和别的的地方都调用这个方法。private void button1_Click(object sender, EventArgs e)
{
//这里添加按钮执行时候的代码
DoSomething();
}private void OtherMethod();
{
//这里添加另外的代码
DoSomething();
}
在程序中调用Button1_Click的时候,传入的参数是null和null就可以了。
我的未结帖子:http://topic.csdn.net/u/20110218/00/13559382-3887-41ba-8e07-b6f510228d41.html
并且自定义EventArg思路:
class MyEventArg :EventArg
{
public long MyNum
{
set{ myNum = value;}
get{ return myNum; }
}
private long myNum ;
}class MyButton:System.Windows.Forms.Button
{
public delegate void MyClick(object sender,MyEventArg e);
public event MyClick OnMyClick;
private MyEventArg myE = new MyEventarg();
protected override void OnClick(EventArgs e)
{
if(OnMyClick != null)
{
OnMyClick(null,myE);
}
base.OnClick(e);
}
}