泛化Button(i)_click获取Button(i).text
本文关键字:Button text 获取 泛化 click | 更新日期: 2023-09-27 18:17:48
我有以下button_click事件,将项目添加到列表框。因为有大约30个按钮,其中文本我需要添加到列表框。我如何以函数或事件的形式进行概括,以便用户单击1到30之间的任何数字按钮都应该添加项目按钮(i)。文本到列表框。在下面的示例中,button1_click添加button1.text。我想要button(I)_click添加按钮(I)。文本到列表框,其中i=1到30。
谢谢
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Insert(0, " ");
if ((checkBox_pickup.CheckState != 0) && (checkBox_family.CheckState != 0))
{
listBox1.Items.Insert(1, listBox1.Items.Count);
listBox1.Items.Insert(2, "PICKUP");
listBox1.Items.Insert(3, textBox2.Text);
listBox1.Items.Insert(4, textBox1.Text);
listBox1.Items.Insert(5, "Family");
listBox1.Items.Insert(5, button1.Text);
listBox1.Items.Insert(6, DateTime.Now.ToString());
listBox1.Items.Insert(listBox1.Items.Count, textBox4.Text);
你应该写你自己的Button-class(意思是继承Button的类)
在这个类中,应该有一个必须在初始化时设置的ID。
也许听起来很难,但实际上这是一件很容易的事。
https://msdn.microsoft.com/en-us/library/7h62478z (v = vs.110) . aspx
假设您使用如下代码创建了30个按钮
Button[] btns=new Button[30];
for (int ii = 0; ii <30; ii++)
{
btns[ii] = new Button();
//and then you adjust their properties....
// btns[ii].FlatStyle =...
// btns[ii].Width = ...
// btns[ii].Top = ......
//.......etc
//
btns[ii].Tag=ii;
btns[ii].Click += new EventHandler(presd_btn);
}
然后你可以在代码中添加一个名为presd_btn的eventandler并为按钮的标签分配索引,例如ii(用于计数0,1…29)或ii+1(用于计数1,2,…30)。然后,您可以访问并识别按下的按钮,通过读取其标签编号在presd_btn新点击eventandler
EventHandler可以像下面的
private void presd_btn(object sender, EventArgs e)
{
Button mybutn = sender as Button;
int btnum=mybutn.Tag;
listBox1.Items.Insert(0, " ");
if ((checkBox_pickup.CheckState != 0) && (checkBox_family.CheckState != 0))
{
listBox1.Items.Insert(1, listBox1.Items.Count);
listBox1.Items.Insert(2, "PICKUP");
listBox1.Items.Insert(3, textBox2.Text);
listBox1.Items.Insert(4, textBox1.Text);
listBox1.Items.Insert(5, "Family");
//and here you assign the pressed button's text
listBox1.Items.Insert(5, mybtn.Text);
listBox1.Items.Insert(6, DateTime.Now.ToString());
listBox1.Items.Insert(listBox1.Items.Count, textBox4.Text);
//......
}