在程序开发中,有时候会遇到这样的情况,即单击一个按钮去触发另一个按钮单击事件,即通过代码来调用一个按钮的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; }