我在一个表单中有10 textBoxes
,我有一个checkBox
。
我希望这个checkBox控制是否启用了textBoxes。我知道我可以textBox1.Enabled = true; textBox2.Enabled = true; etc
这样做,但有没有办法在one line
或更短的时间内完成?
答案 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; } };
}