私は10 textBoxes
1つのフォームを持っており、checkBox
.
このチェックボックスで、テキストボックスが有効かどうかを制御したいと思います。私はそれができることを知っていますが、それを短くtextBox1.Enabled = true; textBox2.Enabled = true; etc
する方法はありますか?one line
次のように、コードの 1 行でこれを行うことができます。
グループ ボックスまたはパネル内にすべてのテキスト ボックスを配置します。
Pnl.Enabled = Chk.Checked
var cntrlCollections = GetAll(this,typeof(TextBox));
foreach (Control ctrl in cntrlCollections)
{
ctrl.Enabled = checkBox.Checked;
}
private void ToggleAllTextBoxControls()
{
foreach (Control c in this.Controls)
if (c Is TextBox)
c.Enabled = chkEnable.Checked;
}
これは、フォーム上のすべてのコントロールを反復処理し、それが TextBox であり、チェックボックスがオンになっている場合に有効にします。
より多くのコード ゴルフ (技術的には1行です): TextBoxes がフォームに直接含まれていると仮定します。
public Form1()
{
InitializeComponent();
checkBox1.Checked = true;
checkBox1.CheckedChanged += (sender, e) => { foreach (TextBox tb in this.Controls.OfType<TextBox>()) { tb.Enabled = ((CheckBox)sender).Checked; } };
}