【问题标题】:foreach loop C# Windows Forms, same button click event [closed]foreach 循环 C# Windows 窗体,相同的按钮单击事件 [关闭]
【发布时间】:2018-02-10 09:09:03
【问题描述】:
private void opc(object sender, EventArgs e)
{
    //NOTE: buttons 13-16 share same click event

    // needs for each loop 
    button13.Enabled = false;
    button14.Enabled = false;
    button15.Enabled = false;
    button16.Enabled = false;
}

【问题讨论】:

  • 请添加更多关于您确切要求的信息。你想要一个按钮来禁用所有这些吗?您是否希望所有按钮仅禁用它们自己?

标签: c# windows forms foreach


【解决方案1】:

你可以试试这个。

private void opc(object sender, EventArgs e)
{
    for (int i = 13; i <= 16; i++)
    {
        Control[] buttons = this.Controls.Find(String.Format("button{0}", i), false);
        if (buttons.Length > 0)
        {
            Button btn = (buttons[0] as Button);
            btn.Click += btn_Click;
            btn.Enabled = true; // or false
        }
    }
}


void btn_Click(object sender, EventArgs e)
{
    MessageBox.Show((sender as Button).Name);
}

【讨论】:

    【解决方案2】:

    见下面的代码:

    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.button13.Click += new System.EventHandler(this.button_Click);
                this.button14.Click += new System.EventHandler(this.button_Click);
                this.button15.Click += new System.EventHandler(this.button_Click);
                this.button16.Click += new System.EventHandler(this.button_Click);
            }
    
            private void button_Click(object sender, EventArgs e)
            {
                Button button = sender as Button;
                string name = button.Text;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      你想把assignmens放到一个循环中吗?使用 AFAIK 不可能的按钮的静态定义名称。您应该首先将按钮放入数组或集合中:

      Button[] button = new Button[numberOfButtons];
      for (int i=0; i<numberOfButtons; i++)
      {
          button[i] = new Button();
          button[i].Click += new System.EventHandler(WhateverYouLike);
          // ... some other property assignments, probably also rule-based
      }
      
      // ... and at a later time:
      
      for (int i=0; i<numberOfButtons; i++) button[i].Enabled = false;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 2021-03-21
        • 2016-11-19
        相关资源
        最近更新 更多