C#如何单击按钮触发另一个按钮事件|代码调用按钮Click事件

2次阅读
没有评论

在程序开发中,有时候会遇到这样的情况,即单击一个按钮去触发另一个按钮单击事件,即通过代码来调用一个按钮的click事件,这里weisico为大家分享C#如何解决代码调用另一个按钮click事件的两种方法

方法一  btnClick_Click(null,null)

用代码调用一个按钮的click事件,两个参数都传 null

 private void button1_Click(object sender, EventArgs e)
        {
            btnClick_Click(null,null);//btnClick为按钮name
            start_Click(null, null);//start为按钮name
        }

单击事件响应函数名为: btnClick_Click(object sender, EventArgs e);用代码调用这个按钮的单击事件。btnClick_Click(null,null);

关于传递两个NULL参数的问题,csdn网站论坛用户whd0310裸奔的蜗牛有个很形象的举例,在这里贴出来,便于大家理解

首先肯定的是传2个null参数给你的事件是可以的,因为那2个参数都是引用传递;
现在就看是不是合理的问题,举个例子:我们要订阅天气预报服务(简单的理解就是气温变化时通知我们),
就是用委托(事件)来实现,在这里借用你的 btnSave_Click(object sender, EventArgs e); 作为
得到通知时的处理,sender参数就代表了天气预报源(假设有:气象局天气预报,新浪天气预报,腾讯天气预报等),e参数就是天气的情况(气温等)。
假设你就是想温度变化时得到通知,而不管这个消息来源是哪儿,也不管具体变化信息,在这种情况下2个参数都为null是可以的;  但是你要是想当通知到来的时候获得更多的信息就不行了。

方法二  btnClick.PerformClick()

 private void button1_Click(object sender, EventArgs e)
        {
            btnClick.PerformClick(null,null);//btnClick为按钮name
            
        }

Button.PerformClick 方法

关于Button.PerformClick方法,微软MSDN有详细的说明,现将C#用法示例贴出来供大家借鉴

private void button1_Click (Object sender, EventArgs e)
 {    
    // If myVar is an even number, click Button2.
    if(myVar %2 == 0)
    {
       button2.PerformClick();       
       // Display the status of Button2's Click event.
       MessageBox.Show("button2 was clicked ");
    }    
    else
    {       
       // Display the status of Button2's Click event.
       MessageBox.Show("button2 was NOT clicked");
    }    
    // Increment myVar.   
    myVar = myVar + 1;
 }

点击查看更多微软MSDN内容