关于N个同一控件的编写方法!
我建了一个网页,里面有200多个BUTTON,他们的ID取名是BUTTON1,BUTTON2……BUTTON199,BUTTON200
用什么简单的方法能使这些BUTTON的事件都可以触发,
不要写成这样子:
private void BUTTON1_Click(object sender, System.EventArgs e)
{
}
……
……
private void BUTTON200_Click(object sender, System.EventArgs e)
{
}
有什么方法吗?
或者能将这么多BUTTON换成数组,再进行触发事件,不过知道怎么搞,请高手指点
问题点数:100、回复次数:16Top
1 楼wxqq2001(就让我用一生等待)回复于 2005-08-01 16:45:20 得分 8
http://community.csdn.net/Expert/topic/4180/4180440.xml?temp=.8962366Top
2 楼mapserver(杨东 http://mapserver.cnblogs.com)回复于 2005-08-01 16:47:55 得分 5
this.button1.Click += new System.EventHandler(this.button_Click)
this.button2.Click += new System.EventHandler(this.button_Click)
this.button3.Click += new System.EventHandler(this.button_Click)
this.button4.Click += new System.EventHandler(this.button_Click)
.
.
.
this.button200.Click += new System.EventHandler(this.button_Click)
在button_Click里去判断是哪个button触发了事件,再做出相应的处理。Top
3 楼pupo(泡泡)回复于 2005-08-01 16:50:39 得分 5
初始化的时候
this.button1.Click += new System.EventHandler(BUTTON1_Click);
this.button2.Click += new System.EventHandler(BUTTON1_Click);
this.button3.Click += new System.EventHandler(BUTTON1_Click);
this.button4.Click += new System.EventHandler(BUTTON1_Click);
.
.
.Top
4 楼xiaomuzi7337(小目子弟兵)回复于 2005-08-01 17:00:23 得分 0
这样子太烦了
this.button1.Click += new System.EventHandler(BUTTON1_Click);
this.button2.Click += new System.EventHandler(BUTTON1_Click);
this.button3.Click += new System.EventHandler(BUTTON1_Click);
this.button4.Click += new System.EventHandler(BUTTON1_Click);
再好能用数组解决,老兄,有两200个呀
如果一定要这样,能不能用循环语句写呢,因为都差不多嘛,
如果循环语句也不行的话,
那么怎样:
在button_Click里去判断是哪个button触发了事件,再做出相应的处理?Top
5 楼conan1211(柯楠)回复于 2005-08-01 17:17:43 得分 50
string sName = "button";
for (int i = 1;i <= 200;i++)
{
Button mybut = this.Controls[1].FindControl(sName+i.ToString());
mybut.Click += new System.EventHandler(this.button_Click);
}
//这样就给你的200个Button加好事件了不过this.button_Click这个事件就得你自己写了
//其中sName+i.ToString()是Button的Name属性的规律,这一部分可以根据实际情况改一下Top
6 楼jialiang(≈≈逆水行舟≈≈)回复于 2005-08-02 13:28:47 得分 2
conan1211(柯楠) 正解Top
7 楼dahaig(HarryPottor)回复于 2005-08-02 14:08:06 得分 2
conan1211(柯楠) 的办法在winform似乎不行
winform里有没有类似的方法呢?Top
8 楼conan1211(柯楠)回复于 2005-08-02 15:36:21 得分 5
回复人: dahaig(HarryPottor) ( ) 信誉:100 2005-08-02 14:08:00 得分: 0
conan1211(柯楠) 的办法在winform似乎不行
winform里有没有类似的方法呢?
=================
谁告诉你没有啊
这不但在WebForm和WinForm就连Java里都有
这个东东都一样的啊Top
9 楼conan1211(柯楠)回复于 2005-08-02 15:37:59 得分 0
哦
你说的是
Button mybut = this.Controls[1].FindControl(sName+i.ToString());
这个方法吗?
这是当然的了
不过在WinForm里也有WinForm里的办法啊Top
10 楼conan1211(柯楠)回复于 2005-08-02 15:43:59 得分 0
在WinForm里可以用
for (int i = 0;i < this.Controls.Count;i++)//通过循环得到界面上的所有控件
{
if (this.Controls[i].Name.StartsWith("btn"))//判断当前控件是不是自己想操作的控件,判断的条件可以通过实际情况来做修改
{
Button mybtn = (Button )this.Controls[i];
mybtn.Click += new System.EventHandler(this.button_Click);
}
}
Top
11 楼wuyi8808(空间/IV)回复于 2005-08-02 18:41:55 得分 8
using System.Windows.Forms;
class Test : Form
{
Button button1, button2, button3;
Test()
{
button1 = new Button();
button1.Parent = this;
button1.Text = "按钮1";
button2 = new Button();
button2.Parent = this;
button2.Text = "按钮2";
button2.Top = 30;
button3 = new Button();
button3.Parent = this;
button3.Text = "按钮3";
button3.Top = 60;
foreach (Control ctl in Controls)
{
if (ctl is Button)
ctl.Click += new System.EventHandler(BUTTON_Click);
}
}
void BUTTON_Click(object sender, System.EventArgs e)
{
if ((Button)sender == button1)
{
MessageBox.Show("单击了按钮1");
}
if ((Button)sender == button2)
{
MessageBox.Show("单击了按钮2");
}
if ((Button)sender == button3)
{
MessageBox.Show("单击了按钮3");
}
}
static void Main()
{
Application.Run(new Test());
}
}
Top
12 楼wuyi8808(空间/IV)回复于 2005-08-02 18:49:14 得分 8
using System.Windows.Forms;
class Test : Form
{
Test()
{
const int N = 5;
Button [] button = new Button [N];
for (int i = 0; i < N; i++)
{
button[i] = new Button();
button[i].Parent = this;
button[i].Top = 28*i;
button[i].Text = "按钮" + (i+1);
button[i].Tag = i+1;
button[i].Click += new System.EventHandler(BUTTON_Click);
}
}
void BUTTON_Click(object sender, System.EventArgs e)
{
MessageBox.Show("单击了按钮" + ((Button)sender).Tag);
}
static void Main()
{
Application.Run(new Test());
}
}
Top
13 楼wuyi8808(空间/IV)回复于 2005-08-02 18:58:20 得分 5
using System.Windows.Forms;
class Test : Form
{
Test()
{
int N = 26; // 总共几个按钮
int n = 3; // 每行几个按钮
Button [] button = new Button [N];
for (int i = 0; i < N; i++)
{
button[i] = new Button();
button[i].Parent = this;
button[i].Top = 28*(i/n);
button[i].Left = 82*(i%n);
button[i].Text = "按钮" + (i+1);
button[i].Tag = i+1;
button[i].Click += new System.EventHandler(BUTTON_Click);
}
}
void BUTTON_Click(object sender, System.EventArgs e)
{
MessageBox.Show("单击了按钮" + ((Button)sender).Tag);
}
static void Main()
{
Application.Run(new Test());
}
}
Top
14 楼sgc8228(开始学习VC,我是被逼的)回复于 2005-08-03 00:54:23 得分 2
顶,学习Top
15 楼conan1211(柯楠)回复于 2005-08-03 09:19:27 得分 0
for (int i = 0;i < this.Controls.Count;i++)//获取界面上的所有控件
{
if (this.Controls[i].Name.IndexOf("btn") != -1)//判断当前控件是不是需要对基操作的控件,这个判断条件可以根据实际情况而定
{
Button mybtn = (Button)this.Controls[i];
mybtn.Click += new System.EventHandler(this.button_Click);
}
}
Top
16 楼xiaomuzi7337(小目子弟兵)回复于 2005-08-03 11:30:00 得分 0
谢谢大家热心解答!Top




