请问Button点击事件

sdfcsd2 2011-08-19 03:16:00
private void button1_Click(object sender, EventArgs e)
{
button2_Click(null, null); //触发 button2_Click事件
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("dfy");
}


问题:我想问的是,红色字体,null、null是什么意思,
参数是null ?还能触发点击事件吗?
...全文
310 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengchenhui 2011-08-19
  • 打赏
  • 举报
回复
你那个根本不是触发事件,只是调用那个方法而已,事件只能在定义这个事件的内部触发,其他地方只能注册,那两个null,前一个是这个事件需要的两个参数,前一个是Object类型,是那个button本身,后一个是封装的一个参数。
这两个参数是.net控件的事件的标准样子。
wnyxy001 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gomoku 的回复:]
引用 8 楼 wnyxy 的回复:
...相当于button2.PerformClick();

还是有区别的。
button2_Click(null,null);直接调用函数。只执行button2_Click函数体。
button2.PerformClick();则可以认为是激发了按钮事件。所有事件订阅都将得到执行(比如例子中包括了button2_Click和button2_Click……
[/Quote]

学习了
回头是岸 2011-08-19
  • 打赏
  • 举报
回复
'''''''''''''''''
兰溪小城 2011-08-19
  • 打赏
  • 举报
回复
因为你在button2_click函数中有参数的,如果你调用的时候没参数就不能调用了。
除非你自己一开始写另一个函数时,不写参数,那样调用就可以不写参数了;
你在调用button2_click(null,null)时也可以这样写button2_click(sender,e)
qqqqq530646973 2011-08-19
  • 打赏
  • 举报
回复
学习一下
sunny906 2011-08-19
  • 打赏
  • 举报
回复
当然能,因为button2_Click(object sender, EventArgs e)中的两个参数都是引用类型,所以,在调用或触发的时候,可以传null,也可以传具体的对象
button2_Click(null,null);
button2_Click(button2,e);
劉宏哲 2011-08-19
  • 打赏
  • 举报
回复
补充一下,只要你的button2事件中没有用到sender和e,就可以在button1中用两个null,不然会抛异常。
劉宏哲 2011-08-19
  • 打赏
  • 举报
回复
sender:出发时间的对象,字面语义为事件发送者。
e:为事件消息,由于button点击没有什么特别的消息,所以是消息的基类,如果是鼠标Down事件,那么e中就会有鼠标的坐标信息。
gomoku 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wnyxy 的回复:]
...相当于button2.PerformClick();
[/Quote]
还是有区别的。
button2_Click(null,null);直接调用函数。只执行button2_Click函数体。
button2.PerformClick();则可以认为是激发了按钮事件。所有事件订阅都将得到执行(比如例子中包括了button2_Click和button2_Click222222)。

void Test()
{
this.button2.Click += button2_Click;
this.button2.Click += button2_Click222222;

this.button2.PerformClick();
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("dfy");
}
private void button2_Click222222(object sender, EventArgs e)
{
MessageBox.Show("Click222222");
}
py1025677845 2011-08-19
  • 打赏
  • 举报
回复
学习了。。
  • 打赏
  • 举报
回复
因为button2_click方法里面没有使用传入的参数,只是传入null激发下这个方法
wnyxy001 2011-08-19
  • 打赏
  • 举报
回复
可以

相当于button2.PerformClick();
ywl236 2011-08-19
  • 打赏
  • 举报
回复
private void button2_Click(object sender, EventArgs e)
{
//send表示触发这个事件的控件
//e代表这个事件触发以后有返回的数据,至于由哪些数据根据控件不同,返回不同
}
拿文本框举个示例:
private void textBox2_Click(object sender, EventArgs e)
{
//send表示触发这个事件的控件
TextBox tb = send as TextBox;
MessageBox.show("点击文本框的值是:"+tb.Text,"提示");
//对tb进行操作就相当于对窗体上的textBox2控件进行操作
tb.Text = "后台赋值";
//当然,如果你通过textBox2.Text = "值";也可以实现上面的效果
//如果你想调用这个事件,而事件里面写了 TextBox tb = send as TextBox;
//就不能这样调了:textBox2_Click(null,null);
//事件里面如果没有用到send或者e,就可以textBox2_Click(null,null);

}

rhj_koko 2011-08-19
  • 打赏
  • 举报
回复
[background=#FF0000]为什么要这样写呀!![/color]
ascdasdc3 2011-08-19
  • 打赏
  • 举报
回复
真搞不懂,为什么参数是null呢,null都能行吗?那不如什么都不写,处处Null
isjoe 2011-08-19
  • 打赏
  • 举报
回复
就是为了调用button2的单击事件,但是必须填写两个参数,填null,

只要button2的单击事件中没有使用这两个参数,传递null就没问题,如果用了,传递null一定会引发错误

安全第一,尽量这样写
button2_Click(button2, EventArgs.Empty ); //触发 button2_Click事件
依旧Smile 2011-08-19
  • 打赏
  • 举报
回复
能啊!
gomoku 2011-08-19
  • 打赏
  • 举报
回复
不能说“触发点击事件”,但可以调用button2_Click,也就是说MessageBox.Show("dfy");可以执行。
不懂装懂 2011-08-19
  • 打赏
  • 举报
回复
是null

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧