C#多个控件共用一个响应
比如说,有100个复选框和一个textedit,每点击一个复选框,就将相应的复选框上的文字显示到textedit控件中。但是,100个复选框太多,为了方面,就用chenkbox[] 弄成数组形式,然后,怎样让所有的复选框对应同一个响应,然后在根据下标来直接调用checkbox[i].text?
不用数组,在事件中用sender获得CheckBox
下面是ASP.NET的,如果是Winform的,代码类似
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = sender as CheckBox;
if (chk != null)
{
//使用chk.Text
}
}
如何理解:多个控件共用一个事件处理程序
原来每个button的Click的事件入口在设计时是可以自行指定的。
十万火急:VC中,能不能集中处理多个按钮(控件)的事件?
是这样的,在VC中,如果一个Dialog上有多个按钮,则每双击一个按钮,就会自动添加与之对应的消息,比如:OnBnOKClick(),然后,在对话框类,加上了public的afx_msg,以及在实现*.cpp里,添加了消息映射但是,如果对话框上按钮多,岂不是要为每个按钮(控件)都添加消息处理函数?能不能为每个同类型的控件,比如按钮,都映射同一个消息函数,(比如我自己添加的BtnClicked()),根据按钮的ID号来进行判断,当前按下的是哪个按钮并处理?
ON_CONTROL_RANGE(BN_CLICKED, 1000, 1005, OnButton)//1000-1005是上面自动添加的按扭ID
在H文件“protected:”下面加上
afx_msg void OnButton(UINT ID);
在CPP文件写上函数体:
void Form::OnButton(UINT ID)
{
switch(ID)
{
case 1000:
MessageBox("你按了第一个按扭。");
break;
case 1001:
MessageBox("你按了第二个按扭。");
break;
}
}
关键在于ON_CONTROL_RANGE咋个宏 具体的使用可以去查看MSDN
共享一个事件处理程序
打开您在上一课中创建的 EventHandler 项目。如果没有保存该项目,您需要先返回上一课使程序响应用户:创建事件处理程序并完成该课程中的步骤。
在“解决方案资源管理器”中,选择“Form1.vb”,然后在“视图”菜单中选择“设计器”。
将另一个 Button 控件从“工具箱”拖动到窗体上。
在“属性”窗口中,将 AutoSize 属性设置为 True。
在“视图”菜单上,选择“代码”以打开代码编辑器。
在 Button1_MouseEnter 方法的声明 (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) 中将 Handles 子句更改为 Handles Button1.MouseEnter, Button2.MouseEnter。
在事件声明的正文中,将代码替换为以下代码。
If sender.Equals(Button1) Then
Button1.Text = "The mouse has entered Button1"
Else
Button2.Text = "The mouse has entered Button2"
End If
此代码检查发送者是否为“Button1”——如果是,则更新“Button1”的 Text 属性;如果不是,则更新“Button2”的 Text 属性。
在 Button1_MouseLeave 方法声明中,按以下所示更改 Handles 子句。
Handles Button1.MouseLeave, Button2.MouseLeave.
在事件声明的正文中,将代码替换为以下代码。
sender.Text = "The mouse has left"
在本例中,代码将发送者(“Button1”或“Button2”)的 Text 属性设置为同一字符串。
按 F5 运行应用程序。
现在,当鼠标指针移过按钮时,文本变为由 The mouse has entered 和按钮名称组成,当鼠标指针离开按钮时,文本变回 The mouse has left。
试着向窗体添加更多的控件并修改 Handles 子句以包括它们 — 它们甚至不必为同一类型的控件!
参考文献:http://www.nokiamobile.org.cn/viewsearch.php?pid=297946379
http://zhidao.baidu.com/question/216315945.html
http://msdn.microsoft.com/zh-cn/library/4ac48519(v=vs.80).aspx