同时启用多个文本框
本文关键字:文本 启用 | 更新日期: 2023-09-27 18:13:35
我有一个10 textBoxes
和一个checkBox
。
我希望这个复选框来控制是否启用文本框。我知道我可以做textBox1.Enabled = true; textBox2.Enabled = true; etc
但有没有办法在one line
或更短的时间里做呢?
您可以在一行代码中这样做,
将所有文本框放在组框或面板中。
Pnl.Enabled = Chk.Checked
private void ToggleAllTextBoxControls()
{
foreach (Control c in this.Controls)
if (c Is TextBox)
c.Enabled = chkEnable.Checked;
}
这将遍历表单上的所有控件,如果它是一个TextBox并且复选框被选中,则启用它
最简洁的方法是先创建一个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);
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; } };
}