泛化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(i)_click获取Button(i).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);
       //......
       }