C# 动态生成按钮如何共享点击事件,注:按钮的显示值都一样
publicpartialclassForm1:Form{privateintY=28;publicForm1(){InitializeComponent();}priv...
public partial class Form1 : Form
{
private int Y = 28;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 2; i++)
{
Button btn = new Button();
btn.Location = new Point(87, Y);
btn.Size = new Size(60, 23);
btn.Name = i.ToString();
btn.Text = "进入";
btn.Click+=new EventHandler(btn_Click);
this.Controls.Add(btn);
Y += 57;
}
}
void btn_Click(object sender, EventArgs e)
{
}
}
当我点击第一个按钮时我想弹出MessageBox.Show("1")当我点击第二个按钮弹出MessageBox.Show("2")
请问各位大侠 我在点击事件里该如何写。 展开
{
private int Y = 28;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 2; i++)
{
Button btn = new Button();
btn.Location = new Point(87, Y);
btn.Size = new Size(60, 23);
btn.Name = i.ToString();
btn.Text = "进入";
btn.Click+=new EventHandler(btn_Click);
this.Controls.Add(btn);
Y += 57;
}
}
void btn_Click(object sender, EventArgs e)
{
}
}
当我点击第一个按钮时我想弹出MessageBox.Show("1")当我点击第二个按钮弹出MessageBox.Show("2")
请问各位大侠 我在点击事件里该如何写。 展开
3个回答
展开全部
别的地方没问题,往这个函数加代码就行了
void btn_Click(object sender, EventArgs e)
{
Button button = sender as Button;//强制转换,sender是触发事件的对象,因为是object类型,所以要强制转换为Button类型,也可以写成 Button button = (Button)sender;
MessageBox.Show(button.Name); //btn.Name = i.ToString();正好,你这个Name就是按数字排的、可以直接用
}
不过建议把// btn.Name = i.ToString();这句改成 btn.Name = "btn"+i.ToString();
然后把 MessageBox.Show(button.Name);改成 MessageBox.Show(button.Name.Replace("btn",""));
更多追问追答
追问
如果这两个按钮启动不同的程序该怎么写?
如果这两个按钮启动不同的程序该怎么写?
展开全部
http://zhidao.baidu.com/question/1795944463184704187.html
你要不要参考一下我的这个回答。
这个回答里的程序,计算器上的按钮全都是动态生成的,操作符共享一个事件函数,数字全部共享一个事件函数,
不过……是C++/CLI的语法写的。这个语法这比较奇怪,不过我觉得应该大概意思能看到?毕竟还是比较像的
对了,按钮显示的值是一样的话,就不能通过Text来判断,不过可以尝试通过Left Top这种属性来判断
还有一种方法就是从Button派生出一个新的类,这个类里面加一个你自己的属性,创建的时候为这个属性赋值。
之后在事件里面,sender转成那个你自己的类,然后就可以访问这个属性了
你要不要参考一下我的这个回答。
这个回答里的程序,计算器上的按钮全都是动态生成的,操作符共享一个事件函数,数字全部共享一个事件函数,
不过……是C++/CLI的语法写的。这个语法这比较奇怪,不过我觉得应该大概意思能看到?毕竟还是比较像的
对了,按钮显示的值是一样的话,就不能通过Text来判断,不过可以尝试通过Left Top这种属性来判断
还有一种方法就是从Button派生出一个新的类,这个类里面加一个你自己的属性,创建的时候为这个属性赋值。
之后在事件里面,sender转成那个你自己的类,然后就可以访问这个属性了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public partial class Form1 : Form
{
private int Y = 28;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 2; i++)
{
Button btn = new Button();
btn.Location = new Point(87, Y);
btn.Size = new Size(60, 23);
btn.Name = i.ToString();
btn.Text = "进入";
btn.Tag = i; //注意这里加一句
btn.Click+=new EventHandler(btn_Click);
this.Controls.Add(btn);
Y += 57;
}
}
void btn_Click(object sender, EventArgs e)
{
//然后事件里这么写就可以了。
Button btn = (object as Button);
MessageBox.Show(btn.Tag.ToString());
}
}
很简单的,主要是利用每个生成的对象的Tag属性,各自存一个能表明自己身份的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询