C# 同时启用多个文本框

C# 同时启用多个文本框,c#,textbox,C#,Textbox,我有一个10个文本框,我有一个复选框 我希望此复选框控制文本框是否启用。我知道我能做到textBox1.Enabled=true;textBox2.Enabled=true;etc但是有没有办法在一行或更短的时间内完成 最干净的方法是首先创建文本框的数组,然后在其上迭代 var textBoxes = new TextBox[] { ... }; ... foreach(var tb in textBoxes) { tb.Enabled = true; } 但你要求的是“一行或更短

我有一个
10个文本框
,我有一个
复选框


我希望此复选框控制文本框是否启用。我知道我能做到
textBox1.Enabled=true;textBox2.Enabled=true;etc
但是有没有办法在
一行或更短的时间内完成

最干净的方法是首先创建
文本框的数组,然后在其上迭代

var textBoxes = new TextBox[] { ... };

...

foreach(var tb in textBoxes)
{
    tb.Enabled = true;
}
但你要求的是“一行或更短”的解决方案。要在一行中完成,您必须执行以下操作:

new [] { textBox1 ... }.ToList().ForEach(tb => tb.Enabled = true);


这将遍历表单上的所有控件,如果它是文本框且复选框已选中,则启用它。

您可以在一行代码中执行此操作,如下所示

将所有文本框放置在组框或面板中

Pnl.Enabled = Chk.Checked
更多代码(技术上是一行):假设文本框直接包含在表单中

    public Form1()
    {
        InitializeComponent();
        checkBox1.Checked = true;
        checkBox1.CheckedChanged += (sender, e) => { foreach (TextBox tb in this.Controls.OfType<TextBox>()) { tb.Enabled = ((CheckBox)sender).Checked; } };
    }
public Form1()
{
初始化组件();
checkBox1.Checked=true;
checkBox1.CheckedChanged+=(发件人,e)=>{foreach(this.Controls.OfType()中的文本框tb){tb.Enabled=((复选框)发件人)。选中;};
}

取决于技术,WPF非常容易绑定。WinForms您可以执行
textBox1.Enabled=checkBox.Checked等等?您可以为将受影响的控件指定一个标记,然后迭代这些控件并说if TAG=“BoundToChecK”然后Enabled=xyz?关于如何实现这一点,有很多示例,但您应该查看如何在
foreach
循环中使用
控件,并确保进行递归调用以启用或禁用所有文本框。这非常简单。它是什么类型的应用程序?Wpf/winform/asp.net?
toggletextboxs()
@P.Brian.Mackey这是一行,它将其他10行括起来。我认为OP正在寻找一种解决方案,它不需要单独设置每个文本框的禁用状态。
Pnl.Enabled=Chk.Checked;)+我赢了。这可能是最干净的方法。如果只选择第一行中的文本框,为什么要选择第二个复选框?这是真的。。我可以删除,但记住最好不要假设。。这也只有在您使用本机.NET控件而不是第三方控件(例如Telerik控件)时才起作用,但是OP应该了解代码在这里的作用。。
Pnl.Enabled = Chk.Checked
var cntrlCollections = GetAll(this,typeof(TextBox));

foreach (Control ctrl in cntrlCollections)
{
  ctrl.Enabled = checkBox.Checked;
}   
    public Form1()
    {
        InitializeComponent();
        checkBox1.Checked = true;
        checkBox1.CheckedChanged += (sender, e) => { foreach (TextBox tb in this.Controls.OfType<TextBox>()) { tb.Enabled = ((CheckBox)sender).Checked; } };
    }