对于每个循环C#Windows窗体,相同的按钮单击事件

对于每个循环C#Windows窗体,相同的按钮单击事件,c#,windows,forms,foreach,C#,Windows,Forms,Foreach,见下面的代码: 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 = fals

见下面的代码:

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;
}

你想让任务人进入一个循环?具有静态定义的按钮名称,这在AFAIK中是不可能的。首先应将按钮放入数组或集合中:

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;
        }
    }
}
Button[]Button=新按钮[numberOfButtons];
对于(inti=0;i你可以试试这个

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;
private void opc(对象发送方,事件参数e)
{
对于(int i=13;i 0)
{
按钮btn=(按钮[0]作为按钮);
点击+=btn\U点击;
btn.Enabled=true;//或false
}
}
}
无效btn_单击(对象发送者,事件参数e)
{
MessageBox.Show((发送者为按钮).Name);
}

请添加更多关于您所问问题的信息。是否希望一个按钮禁用所有按钮?是否希望所有按钮仅禁用其自身?
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);
}