C# 单击“启用”按钮
我有4个按钮,如果单击某个按钮,我想禁用它们 注意:一次只能禁用一个 所以我的逻辑是: 在C# 单击“启用”按钮,c#,winforms,C#,Winforms,我有4个按钮,如果单击某个按钮,我想禁用它们 注意:一次只能禁用一个 所以我的逻辑是: 在btn1中单击事件I do: 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; 其他两个按钮
btn1
中单击事件I do:
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;
其他两个按钮也一样。当我看到这段代码时,我不太喜欢它。有没有什么方法可以做一些更具可读性和更简短的操作来执行这种类型的操作与编写大量代码相比,使用组并将属性设置为更简单
正如文档所建议的,这使单选按钮具有Windows按钮的外观。这里还有另一个想法,您可以为所有按钮设置一个处理程序,如下所示: 您的代码变得非常简单:
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;
}
}
}
}
我希望这会有所帮助我倾向于使用某种数据结构来控制您想要分组的按钮,从而使按钮的点击不那么具体
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;
}
}
}
}
公共部分类表单1:表单
{
//控制按钮。
列表按钮=新建列表();
公共表格1()
{
初始化组件();
按钮。添加(此按钮1);
按钮。添加(此按钮2);
按钮。添加(此按钮3);
按钮。添加(此按钮4);
}
私有无效按钮\u单击(对象发送者,事件参数e)
{
按钮按钮=发送器为按钮;
foreach(按钮中的变量b)
{
如果(按钮文本等于(b文本))
{
b、 启用=错误;
}
其他的
{
b、 启用=真;
}
}
}
}
private void btn\u单击(对象发送者,事件参数e)
{
foreach(Controls.OfType()中的按钮btn)
btn.Enabled=true;
按钮按钮=发送器为按钮;
按钮。已启用=错误;
}
别忘了使用系统。Linq看起来你想要一组单选按钮,而不是普通按钮。我想要单选按钮一样的功能,但我想要普通按钮以@DavidG的形式显示,然后使用单选按钮并将
外观
属性设置为@DavidG指出的按钮
,这可能会有帮助,问题是单选按钮您可以更改widt propert@DAVIDG为什么在这里投票?对我来说这似乎是一个很好的解决办法。@Enigmativity可能是他们没有理解我的想法?或者只是嫉妒
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;
}