请问,这种调用button_Click事件如何区分
void work_1()
{
button1_Click(null,null);
}
void work_2()
{
button1_Click(null,null);
}
void work_3()
{
button1_Click(null,null);
}
三个方法引发button1点击事件,如何区分是哪个方法调用的?或者是手动点击的呢?
[解决办法]
send == null
[解决办法]
sender == null …………
[解决办法]
void work_1()
{
button1_Click(button1,null);
}
void work_2()
{
button1_Click(button1,null);
}
void work_3()
{
button1_Click(button1,null);
}
[解决办法]
void work_1(){ button1_Click("work_1", null);}void work_2(){ button1_Click("work_2", null);}void work_3(){ button1_Click("work_3", null);}private void button1_Click(object sender, EventArgs e){ string str; if ((str = sender as string) != null) { switch ((string)sender) { case "work_1": break; case "work_2": break; case "work_3": break; default: break; } }}
[解决办法]
没法区分,不过是null还是button1,都被区分不了,你可以这样
void work_1()
{
button1_Click(1,null);
}
void work_2()
{
button1_Click(2,null);
}
void work_3()
{
button1_Click(3,null);
}
因为参数sender是object类型,可以传入int值来区分
[解决办法]
你可以通过不同方法里面给sender传入不同的参数然后再处理函数里面进行区分
[解决办法]
自己传参,自己区分,
你传3个null值是没法区分的
[解决办法]
sender是object类型,可以是任何类型
[解决办法]
private void button1_Click(object sender, EventArgs e){ string str; if ((str = sender as string) != null) { switch ((string)sender) { case "work_1": break; case "work_2": break; case "work_3": break; default: break; } } else { Button btn; if ((btn = sender as Button) != null) { // 判断 btn 来处理 } }}