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")
请问各位大侠 我在点击事件里该如何写。
展开
 我来答
做个自由人fly
2013-11-29 · TA获得超过191个赞
知道答主
回答量:60
采纳率:0%
帮助的人:28.4万
展开全部
别的地方没问题,往这个函数加代码就行了
 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",""));

更多追问追答
追问
如果这两个按钮启动不同的程序该怎么写?
如果这两个按钮启动不同的程序该怎么写?
空雪梦见
2013-11-29 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1142万
展开全部
http://zhidao.baidu.com/question/1795944463184704187.html

你要不要参考一下我的这个回答。
这个回答里的程序,计算器上的按钮全都是动态生成的,操作符共享一个事件函数,数字全部共享一个事件函数,
不过……是C++/CLI的语法写的。这个语法这比较奇怪,不过我觉得应该大概意思能看到?毕竟还是比较像的

对了,按钮显示的值是一样的话,就不能通过Text来判断,不过可以尝试通过Left Top这种属性来判断

还有一种方法就是从Button派生出一个新的类,这个类里面加一个你自己的属性,创建的时候为这个属性赋值。
之后在事件里面,sender转成那个你自己的类,然后就可以访问这个属性了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fujie724
2013-11-29 · TA获得超过1187个赞
知道小有建树答主
回答量:154
采纳率:100%
帮助的人:272万
展开全部
    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属性,各自存一个能表明自己身份的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式