如何在c#.net中动态创建按钮上执行click事件
我正在尝试构建一个应用程序,用户可以在其中选择类别,并根据它显示其子类别,这些子类别是按钮,它们是动态创建的。
现在,由于按钮是动态创建的,所以我很困惑如何在button_click事件下编写代码,因为我不知道有多少子类别。
那么有什么方法可以执行特定按钮的click事件,以便我可以执行某些命令?
EDITED
这是我试过的代码
Button btnDynamicButton = new Button(); private void btnclick_Click(object sender, EventArgs e) { label2.Text = btnDynamicButton.Text; } private void btnappetizer_Click(object sender, EventArgs e) { groupBox2.Visible =false; DataTable dt = new DataTable(); dt = itemmasterbl.SelectallrecordFromtblItem(btnappetizer.Text); for (int i = 0; i < dt.Rows.Count; i++) { string name = "Appetizer" + DynamicButtonCount; Button btnDynamicButton1 = new Button(); btnDynamicButton1.Name = name; btnDynamicButton1.Text = name; btnDynamicButton1.Size = new System.Drawing.Size(150, 30); btnDynamicButton1.Location = new System.Drawing.Point(180, DynamicButtonCount * 30); btnDynamicButton1.Click +=new EventHandler(btnclick_Click);
Controls.Add(btnDynamicButton1); DynamicButtonCount++; btnDynamicButton = btnDynamicButton1; } }
一旦我这样做,它根据开胃菜下的itemmaster DB中的值的数量创建三个按钮,但是一旦我点击三个按钮中的任何一个,标签只显示最后一个按钮文本,因为在最后一行我有:
btnDynamicButton = btnDynamicButton1;
这将持续按钮信息,但我想要按哪个按钮,标签应显示相应的文字。 我怎样才能做到这一点。
你可以将所有逻辑放入一个处理程序:
System.Windows.Forms.Button b = new System.Windows.Forms.Button(); b.Click += new EventHandler(b_Click); //finally insert the button where it needs to be inserted. ... void b_Click(object sender, EventArgs e) { MessageBox.Show(((System.Windows.Forms.Button)sender).Name + " clicked"); }
要编辑:
您正在Field btnDynamicButton
中存储按钮的引用。 因此,它总是会被您创建的最新按钮覆盖。 您不应该使用字段来引用该按钮。 click-handler的sender
参数包含已单击的按钮元素。 请参阅上面的代码:简单的sender
到Button
,你知道哪个按钮被点击了:
上述就是C#学习教程:如何在c#.net中动态创建按钮上执行click事件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private void btnclick_Click(object sender, EventArgs e) { Button btn = (Button)sender label2.Text = btn.Text; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1031222.html