多个自定义button公用一个事件处理,在事件处理中怎样得到是哪一个button触发的?

zhouchunping_99 2008-07-28 04:04:55
多个自定义button公用一个事件处理,在事件处理中怎样得到是哪一个button触发的?
如:
button[i].click+=new EventHander(button_click);
private void button_click(object sender,eventArgs e)
{
...
}
...全文
343 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdgphc 2008-07-28
  • 打赏
  • 举报
回复
2楼应该是可以的.但是LZ这句button[i].click+=new EventHander(button_click); 表明了是WebForm,我还从未试过.好像WinForm中不支持控件数组.
happyboxman 2008-07-28
  • 打赏
  • 举报
回复
可怜楼上的都说完了啊。。。
sender as Button
补充一下
还是用as好
眼里进了砂 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 csharp_study_99 的回复:]
引用 6 楼 ericzhangbo1982111 的回复:
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}

[/Quote]
try530 2008-07-28
  • 打赏
  • 举报
回复
正解如下:

private void button_click(object sender,eventArgs e)
{
Button bt=(Button)sender;
//这样你就可以得到点击了那个button
if(bt.Text="a")
{
.......
}

if(bt.Text="b")
{
.......
}

if(bt.Text="c")
{
.......
}

if(bt.Text="d")
{
.......
}
}
zhouchunping_99 2008-07-28
  • 打赏
  • 举报
回复
哎,自己白试了那么长时间,原来是自己定义控件时忘了起名字了,怪不得总是什么也得不到。哈哈。。。。
就当散分了。。。。
不好意思了。。。。。。
livesw 2008-07-28
  • 打赏
  • 举报
回复
((Button)sender).Text 就是你点击的button名称
csharp_study_99 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ericzhangbo1982111 的回复:]
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}
[/Quote]
xz_lm_fly 2008-07-28
  • 打赏
  • 举报
回复
private void button_click(object sender,eventArgs e)
{
switch((Control)sender).Name)
{
case "button1":
....;break;
.....
}
}
CsToD 2008-07-28
  • 打赏
  • 举报
回复
楼主,不可能,绝对可用,你跟定哪里出错了,我给你发消息了
「已注销」 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 longfei_liuweitao 的回复:]
引用 12 楼 zhouchunping_99 的回复:
引用 6 楼 ericzhangbo1982111 的回复:
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}

也不行,我也试过

Button这里的Button是你自定义的Button不是.net里自带的Button,如果不行的话可不可以把报什么错贴上来?!
[/Quote]
「已注销」 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhouchunping_99 的回复:]
引用 6 楼 ericzhangbo1982111 的回复:
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}

也不行,我也试过
[/Quote]
Button这里的Button是我自定义的Button不是.net里自带的Button,如果不行的话可不可以把报什么错贴上来?!
「已注销」 2008-07-28
  • 打赏
  • 举报
回复
这么简单的问题,简直就是白给分儿吗
Button button=(Button)sender;
switch(button.属性) //ID、Name、只要能把Button分开的属性都行
{
case "a":
break;
case "b":
break;
}
zhouchunping_99 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ericzhangbo1982111 的回复:]
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}
[/Quote]
也不行,我也试过
zhouchunping_99 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 CsToD 的回复:]
引用楼主 zhouchunping_99 的帖子:
多个自定义button公用一个事件处理,在事件处理中怎样得到是哪一个button触发的?
如:
button[i].click+=new EventHander(button_click);
private void button_click(object sender,eventArgs e)
{
这里sender就是发送者,在这里确定
if(sender==button1)
....
...
}


这个问题肯定很多人都知道,但我是沙发,希望楼主把100分都给我
[/Quote]
我早试过了,不行
CsToD 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunrobust 的回复:]
6楼正解, 2楼不对。
[/Quote]

你不要混淆视听!!!
==运算符对于引用类型,比较的是引用
if(sender==button1)
这样的写法是完全正确的
你自己去试试
不懂不要乱评论!
GhostAdai 2008-07-28
  • 打赏
  • 举报
回复
sender就是触发事件的对象,可以这样(假设你的自定义Button类名为MyButton):
MyButton btn = (MyButton)sender;
if(btn.name=="xxx你想判断的button名字"){
○○××;
}
zfh198601 2008-07-28
  • 打赏
  • 举报
回复
多个自定义button公用一个事件处理,在事件处理中怎样得到是哪一个button触发的?
如:
button[i].click+=new EventHander(button_click);
private void button_click(object sender,eventArgs e)
{
这里sender就是发送者,在这里确定
if(sender==button1)
....
...
}
sunrobust 2008-07-28
  • 打赏
  • 举报
回复
6楼正解, 2楼不对。
ericzhangbo1982111 2008-07-28
  • 打赏
  • 举报
回复
private void button_click(object sender,eventArgs e)
{
Button bt = (Button)sender;
if(bt.Name=="button1")
}
dreamsnake 2008-07-28
  • 打赏
  • 举报
回复
哭哦。没抢到。好多分呀。。。。。。
加载更多回复(4)

111,092

社区成员

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

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

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