winform程序,button事件之间如何传递参数

shqx2 2009-11-23 09:58:25
winform程序中,在页面上有三个buttong:一个button_Add(记录添加按钮),一个button_Modify(记录修改按钮),一个button_Save按钮(记录添加或修改后保存按钮)。
在button_Save_Click事件中,要判断是哪个按钮所引发的save事件,还有其他的参数。如何获得其他按钮(按钮事件)中的一个或多个参数呢?
我知道的可以设置全局变量和Button.tag属性传递参数。如果不用这两种方法,还有其他的方法吗?
还有请教各位高手,哪种方法更好?
谢谢
...全文
864 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqiuzaihui 2009-11-24
  • 打赏
  • 举报
回复

button_Save_Click(object sender, EventArgs e)
{
switch(((Button)sender).name)
{
case "button_Save":
// save 操作
break;
case "button_Add":
// add操作
break;
case "button_Change":
// Change操作
break;
}
}
it_gz_xi 2009-11-24
  • 打赏
  • 举报
回复
楼上的都说了 啊
shqx2 2009-11-24
  • 打赏
  • 举报
回复
全局变量的我会,还有更好的法子吗
longhair9711 2009-11-24
  • 打赏
  • 举报
回复
定义个eunm类型:
enum OperatorStatus
{add,modify}
定义全局变量:
private OperatorStatus currentStatus;

点击Add按钮时设置currentStatus = OperatorStatus.add;
点击modity按钮时设置currentStatus = OperatorStatus.Modify;
点击Save是判断currentStatus就行了。


或者简单一点就设置一个全局变量:
paivate bool isNew;
点击Add时设置isNew = true;
点击Modify时设置isNew = false;
点击Save是判断isNew就行了。
ljhcy99 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shqx2 的回复:]
我没描述清楚,把大家带沟里了。
add\modify\save三个按钮,按add\modify任何一个按钮,其他的enable都为FALSE,只留下save按钮。z这时按下save按钮,在这种情况下如何区分(sql语句update/insert)
namhyuk能否讲的再具体一些。谢谢各位
[/Quote]
用一个private变量来记住add还是modify操作把
shqx2 2009-11-24
  • 打赏
  • 举报
回复
我没描述清楚,把大家带沟里了。
add\modify\save三个按钮,按add\modify任何一个按钮,其他的enable都为FALSE,只留下save按钮。z这时按下save按钮,在这种情况下如何区分(sql语句update/insert)
namhyuk能否讲的再具体一些。谢谢各位
namhyuk 2009-11-23
  • 打赏
  • 举报
回复
弄一个自定义事件。
这三个button都会raise这个自定义事件,根据情况传递不同的参数。

class MyEventArgs : EventArgs
{
public MyEventArgs(string info) { this.CustomInfo = info;}
public CustomInfo { get; set; }

...
}

这个继承自EventArgs的对象可以在事件被触发时,向事件处理方法传递任何你想传递的信息。

当然,
public delegate void MyEvent(object sender, MyEventArgs e);

...

public event MyEvent myEvt;

...




zl194 2009-11-23
  • 打赏
  • 举报
回复
xxd.
你将最后点击的button的Enable设为 false 不就行了。
save时看看是add还是edit就行了。
flyfly2008 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lzsh0622 的回复:]
C# codeprivatevoid button_Add_Click(object sender, EventArgs e)
{// ... button_Save_Click(object sender, EventArgs e)
}privatevoid button_Modify_Click(object sender, EventArgs e)
{// ... button_Sa?-
[/Quote]

UP
flyfly2008 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lzsh0622 的回复:]
C# codeprivatevoid button_Add_Click(object sender, EventArgs e)
{// ... button_Save_Click(object sender, EventArgs e)
}privatevoid button_Modify_Click(object sender, EventArgs e)
{// ... button_Sa?-
[/Quote]

支持这个
hhc123 2009-11-23
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
this.Controls["Button1"].Click += new System.EventHandler(this.Butt1_Click);
}

void this.Butt1_Click(object sender, EventArgs e)
{
MessageBox.Show((sender as Button).Name);
// throw new NotImplementedException();
}
lzsh0622 2009-11-23
  • 打赏
  • 举报
回复


private void button_Add_Click(object sender, EventArgs e)
{
// ...
button_Save_Click(object sender, EventArgs e)
}


private void button_Modify_Click(object sender, EventArgs e)
{
// ...
button_Save_Click(object sender, EventArgs e)
}
private void button_Save_Click(object sender, EventArgs e)
{
if (((Button)sender).Name=="button_Add")
// ...
else if (((Button)sender).Name=="button_Modify")
// ...
}
lovelan1748 2009-11-23
  • 打赏
  • 举报
回复
1.(Button)sender
2.遍历控件名

111,110

社区成员

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

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

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