单击启用按钮

时间:2019-05-06 23:26:58

标签: c# winforms

我有4个按钮,如果单击某个按钮,我想禁用它们

注意:一次只能禁用一个

所以我的逻辑就像:

btn1点击事件中,我这样做:

btn1.Enabled = false;
btn2.Enabled = true;
btn3.Enabled = true;
btn4.Enabled = true;

btn2点击事件中:

btn1.Enabled = true;
btn2.Enabled = false;
btn3.Enabled = true;
btn4.Enabled = true;

其他两个按钮也一样。当我看到这段代码时,我不太喜欢它。有什么办法可以做些更易读且简短的事情

4 个答案:

答案 0 :(得分:3)

与其编写大量代码相比,使用RadioButton组并将Appearance属性设置为Button更为简单。

如文档所建议,这使单选按钮具有Windows按钮的外观。

答案 1 :(得分:3)

这是您的另一个主意-您可以为所有按钮设置一个处理程序,如下所示:

enter image description here

您的代码变得非常简单:

using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn_click(object sender, EventArgs e)
        {
            button1.Enabled = true;
            button2.Enabled = true;
            button3.Enabled = true;
            button4.Enabled = true;

            Button btn = sender as Button;
            if (btn != null)
            {
                btn.Enabled = false;
            }
        }
    }
}

我希望对您有帮助

答案 2 :(得分:1)

我倾向于使用某种数据结构来控制您希望分组的按钮,从而使Button_Click的定义不太具体。

  public partial class Form1 : Form
    {
        // Control the buttons.
        List<Button> buttons = new List<Button>();

        public Form1()
        {
            InitializeComponent();

            buttons.Add(this.button1);
            buttons.Add(this.button2);
            buttons.Add(this.button3);
            buttons.Add(this.button4);
        }

        private void Button_Click(object sender, EventArgs e)
        {
            Button button = sender as Button;
            foreach (var b in buttons)
            {
                if (button.Text.Equals(b.Text))
                {
                    b.Enabled = false;
                }
                else
                {
                    b.Enabled = true;
                }
            }
        }
    }

答案 3 :(得分:0)

private void btn_Click(object sender, EventArgs e)
{
    foreach(Button btn in Controls.OfType<Button>())
        btn.Enabled = true;
    Button button = sender as Button;
    button.Enabled = false;
}

不要忘记使用System.Linq