Button[] x, 如何。。。
x = new Button[100];
for(int i=0;i<100;i++)
{
x[i].Click += ....... // 此处想为每一个 x 单独添加一个事件处理函数,如何实现?
如果所有 x 都用同一个处理函数,在函数中能否区分 i=?
问题点数:50、回复次数:6Top
1 楼winxieddd(一剑飘香)回复于 2005-01-02 15:48:00 得分 15
区分不了,但你可以用其他方法。譬如:把i值记录到button的Tag属性里面。这里,你就可以区分了。Top
2 楼sarcophile(食肉动物)回复于 2005-01-02 16:13:06 得分 0
为每一个 x 单独添加一个事件处理函数, 也没有简便的方法Top
3 楼sarcophile(食肉动物)回复于 2005-01-02 16:13:47 得分 0
为每一个 x 单独添加一个事件处理函数, 也没有简便的方法 ?
Top
4 楼popcorn(米花.珠海)回复于 2005-01-02 16:23:20 得分 10
只能用一个事件处理函数,不过可以在函数里面判断是哪个BUTTON触发的事件:
private void button_Click(object sender, System.EventArgs e)
{
Button button = (Button)sender;
MessageBox.Show(button.Text);
}Top
5 楼winxieddd(一剑飘香)回复于 2005-01-02 16:53:26 得分 25
用代理数组:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication4
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private EventHandler [] buttonClick = new EventHandler[4];
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
this.buttonClick[0] = new EventHandler(this.button1_Click);
this.buttonClick[1] = new EventHandler(this.button2_Click);
this.buttonClick[2] = new EventHandler(this.button3_Click);
this.buttonClick[3] = new EventHandler(this.button4_Click);
//你可以在此新建按钮,然后用循环。
this.button1.Click +=this.buttonClick[0];
this.button2.Click +=this.buttonClick[1];
this.button3.Click +=this.buttonClick[2];
this.button4.Click +=this.buttonClick[3];
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(24, 24);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
//
// button2
//
this.button2.Location = new System.Drawing.Point(128, 24);
this.button2.Name = "button2";
this.button2.TabIndex = 1;
this.button2.Text = "button2";
//
// button3
//
this.button3.Location = new System.Drawing.Point(24, 80);
this.button3.Name = "button3";
this.button3.TabIndex = 2;
this.button3.Text = "button3";
//
// button4
//
this.button4.Location = new System.Drawing.Point(128, 80);
this.button4.Name = "button4";
this.button4.TabIndex = 3;
this.button4.Text = "button4";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("1");
}
private void button2_Click(object sender, System.EventArgs e)
{
MessageBox.Show("2");
}
private void button3_Click(object sender, System.EventArgs e)
{
MessageBox.Show("3");
}
private void button4_Click(object sender, System.EventArgs e)
{
MessageBox.Show("4");
}
}
}
Top
6 楼sarcophile(食肉动物)回复于 2005-01-02 17:02:08 得分 0
(一剑飘香) 的答案是我想要的,谢谢!
也谢谢楼上两位Top




