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

请问,这种调用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);
}
------解决方案--------------------
C# code
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类型,可以是任何类型
------解决方案--------------------
探讨
引用:

C# code
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 voi……

------解决方案--------------------
如果是事件直接指定就再加上
C# code
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 来处理
        }
    }
}