同时启用多个textBox

时间:2013-05-14 14:00:41

标签: c# textbox

我在一个表单中有10 textBoxes,我有一个checkBox

我希望这个checkBox控制是否启用了textBoxes。我知道我可以textBox1.Enabled = true; textBox2.Enabled = true; etc这样做,但有没有办法在one line或更短的时间内完成?

5 个答案:

答案 0 :(得分:1)

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

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

Pnl.Enabled = Chk.Checked

答案 1 :(得分:0)

最干净的方法是首先创建一个TextBox数组,然后迭代它。

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

...

foreach(var tb in textBoxes)
{
    tb.Enabled = true;
}

但是你要求“一线或更短”的解决方案。要在一行中完成,你必须这样做:

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

new [] { textBox1 ... }.AsParallel().ForAll(tb => tb.Enabled = true);

答案 2 :(得分:0)

private void ToggleAllTextBoxControls()
{
    foreach (Control c in this.Controls)
        if (c Is TextBox)
             c.Enabled = chkEnable.Checked;
}  

这将遍历表单上的所有控件并启用它,如果它是TextBox并选中复选框。

答案 3 :(得分:0)

var cntrlCollections = GetAll(this,typeof(TextBox));

foreach (Control ctrl in cntrlCollections)
{
  ctrl.Enabled = checkBox.Checked;
}   

答案 4 :(得分:0)

更多代码高尔夫(技术上一个行):假设文本框直接包含在表单中

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