【问题标题】:Generalize Button(i)_click to get Button(i).text泛化Button(i)_click得到Button(i).text
【发布时间】:2016-11-15 04:36:57
【问题描述】:

我有以下 button_click 事件将项目添加到列表框。因为大约有 30 个按钮,我需要将哪些文本添加到列表框中。我如何以函数或事件的形式进行概括,以便用户单击从 1 到 30 的任何数字按钮应将 item button(i).text 添加到列表框。 在以下示例中 button1_click 添加 button1.text。我希望 button(i)_click 将 button(i).text 添加到 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);

【问题讨论】:

  • 将 sender 转换为 Button 对象,然后您可以使用按钮的 Name 和 Text 属性:Button b = sender as Button;

标签: c# listbox buttonclick


【解决方案1】:

您可能应该编写自己的“自己的”Button 类(意味着继承自 Button 的类)。

在这个类中,应该有一个必须在初始化时设置的 ID。

也许听起来很难,但实际上这是一项非常容易的任务。

https://msdn.microsoft.com/en-us/library/7h62478z(v=vs.110).aspx

【讨论】:

    【解决方案2】:

    假设您使用如下代码创建了 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);
                  }
    

    然后您可以在该代码中添加一个名为例如 EventHandler 的事件处理程序。 presd_btn 并将索引分配给按钮的标签,例如ii(用于计数 0,1,,,29)或 ii+1(用于计数 1,2,...30)。 然后你可以通过阅读它来访问和识别被按下的按钮 在 presd_btn 新点击 EventHandler 中的标签号。

    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);
           //......
           }
    

    希望这些帮助。

    【讨论】:

      猜你喜欢
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 2016-02-11
      • 2022-12-01
      • 2022-12-19
      • 1970-01-01
      相关资源
      最近更新 更多