怎么用用代码创建一个已知Name属性的按钮click事件

Dimago_ 2015-05-09 02:33:31
如图,只能得到按钮的Name格式,图中???应该怎么填

...全文
319 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbjiabcd 2015-05-11
  • 打赏
  • 举报
回复
方法名又不是非得跟Name有关,你自己起一个不就行了
xuzuning 2015-05-10
  • 打赏
  • 举报
回复
要解放思想
namespace 动态按钮
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var p = new Point(4, 4);
            var d = 24;
            for (int i = 1; i <= 10; i++)
            {
                Button b = new Button();
                b.Name = "btn_" + i.ToString();
                b.Text = "按钮"+i.ToString();
                b.Location = p;
                p.Y += d;
//                b.Click += delegate(object sender, EventArgs e) { MessageBox.Show(((Button)sender).Text); };
                b.Click += new EventHandler(my_Click);
                this.Controls.Add(b);
            }
        }

        static void my_Click(object sender, EventArgs e)
        {
            MessageBox.Show(((Button)sender).Name);
        }
    }
}
引用 3 楼 q466891026 的回复:
[quote=引用 2 楼 xuzuning 的回复:] ??? 等于事件响应的方法名
我知道是响应名,但我只知道控件的名字是“b”+step.Tostring()+bn.Tostring() 用这个函数创建的button的名称每次都不一样,那我应该用 什么_Click[/quote]
「已注销」 2015-05-09
  • 打赏
  • 举报
回复
flowLayoutPanel1.Controls["btn_6"]
这样也可以。 不用循环。
「已注销」 2015-05-09
  • 打赏
  • 举报
回复






public Form1()
{
InitializeComponent();

for (int i = 1; i <= 10; i++)
{
Button b = new Button();
b.Name = "btn_" + i.ToString();
b.Text = "按钮" + i.ToString();
//b.Click += delegate(object sender, EventArgs e)
//{
// MessageBox.Show(((Button)sender).Text);
//};
flowLayoutPanel1.Controls.Add(b);
}


}

private void button1_Click(object sender, EventArgs e)
{
foreach (Control i in flowLayoutPanel1.Controls)
{
if (i.Name == "btn_7")
{
i.Click += delegate(object sender2, EventArgs e2)
{
MessageBox.Show(((Button)sender2).Text);
};
}
if (i.Name == "btn_6")
{
i.Click += i_Click;
}
}
}

void i_Click(object sender, EventArgs e)
{
MessageBox.Show("这个是按钮6");
}
「已注销」 2015-05-09
  • 打赏
  • 举报
回复
引用 8 楼 q466891026 的回复:
[quote=引用 6 楼 wawd74520 的回复:]
  for (int i = 1; i <= 10; i++)
            {
                Button b = new Button();
                b.Name = "btn_" + i.ToString();
                b.Text = "按钮"+i.ToString();
                b.Click += delegate(object sender, EventArgs e)
                {
                    MessageBox.Show(((Button)sender).Text);
                };
                flowLayoutPanel1.Controls.Add(b);
            }
这样我还是不能脱离这个函数去写按钮单击事件啊[/quote] 简单。 骚等。
Dimago_ 2015-05-09
  • 打赏
  • 举报
回复
引用 6 楼 wawd74520 的回复:
  for (int i = 1; i <= 10; i++)
            {
                Button b = new Button();
                b.Name = "btn_" + i.ToString();
                b.Text = "按钮"+i.ToString();
                b.Click += delegate(object sender, EventArgs e)
                {
                    MessageBox.Show(((Button)sender).Text);
                };
                flowLayoutPanel1.Controls.Add(b);
            }
这样我还是不能脱离这个函数去写按钮单击事件啊
「已注销」 2015-05-09
  • 打赏
  • 举报
回复
不想用text 还可以用b.Tag存 对象
「已注销」 2015-05-09
  • 打赏
  • 举报
回复


  for (int i = 1; i <= 10; i++)
{
Button b = new Button();
b.Name = "btn_" + i.ToString();
b.Text = "按钮"+i.ToString();
b.Click += delegate(object sender, EventArgs e)
{
MessageBox.Show(((Button)sender).Text);
};
flowLayoutPanel1.Controls.Add(b);
}
  • 打赏
  • 举报
回复
Button mybutton = new Button(); 22. mybutton.Text = "More"; 23. mybutton.Click += new EventHandler(mybutton_Click); 24. mybutton.Parent = this; 25. } 26. protected void mybutton_Click(object sender, EventArgs e) 27. { 28. MessageBox.Show("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 29. }
鏡椛氹鈅 2015-05-09
  • 打赏
  • 举报
回复
引用 3 楼 q466891026 的回复:
[quote=引用 2 楼 xuzuning 的回复:] ??? 等于事件响应的方法名
我知道是响应名,但我只知道控件的名字是“b”+step.Tostring()+bn.Tostring() 用这个函数创建的button的名称每次都不一样,那我应该用 什么_Click[/quote] 如2楼,创建一个统一的事件,根据sender判断是哪个控件触发了该事件...
Dimago_ 2015-05-09
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
??? 等于事件响应的方法名
我知道是响应名,但我只知道控件的名字是“b”+step.Tostring()+bn.Tostring() 用这个函数创建的button的名称每次都不一样,那我应该用 什么_Click
xuzuning 2015-05-09
  • 打赏
  • 举报
回复
??? 等于事件响应的方法名
江南小鱼 2015-05-09
  • 打赏
  • 举报
回复

void mHandler(object sender,EventArgs e)
{
//按钮事件
}
tcmakebest 2015-05-09
  • 打赏
  • 举报
回复
看惯了 button1_Click 误以为一定要用按钮名称开头才能用吗? 其实不是的. 这只是系统自动生成的时候取的一个不太容易重复又好记的名称.
redshiliu 2015-05-09
  • 打赏
  • 举报
回复
楼主其实想左了C#中Button的Click事件的事件委托不是必须是ButtonName_Click(Object sender,EventArgs e)这种形式 你完全可以将所有需要处理的按钮的Click事件通过一个委托来处理,或者直接用匿名委托 m.Click+=(o,e)=> { ...... }

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧