ここであなたを見つめるには十分です。必要に応じて、他のcontrol
タイプのために余分にforeach
ループを追加する必要があります。いいことは、このアプローチでは、インスタンスごとではなく、Control
タイプごとに数行のコードしか必要でないことです。
private void addHandlers()
{
foreach (TextBox control in Controls.OfType<TextBox>())
{
control.TextChanged += new EventHandler(OnContentChanged);
}
foreach (ComboBox control in Controls.OfType<ComboBox>())
{
control.SelectedIndexChanged += new EventHandler(OnContentChanged);
}
foreach (CheckBox control in Controls.OfType<CheckBox>())
{
control.CheckedChanged += new EventHandler(OnContentChanged);
}
}
protected void OnContentChanged(object sender, EventArgs e)
{
if (ContentChanged != null)
ContentChanged(this, new EventArgs());
}
public event EventHandler ContentChanged;
あなたのすべてのコントロールをサポートするためにaddHandlers
方法を変更して、フォームにコントロールのすべてを追加した後、それを呼び出した後、あなたは、単にいつでも何かに発生する必要があるかもしれません何でも行うためContentChanged
イベントを購読することができますフォームが変更されました(つまり、保存ボタンを有効/無効にします)。
が重複する可能性[C#でフォームの任意のコントロールの変化を検出するには?](http://stackoverflow.com/questions/3571722/how-to-detect-changes-in-any-control -of-the-form-in-c) –
このようにプログラムするのは本当に意味がありません。ユーザーが何かを確認してからもう一度チェックを外すと、もう一度ボタンを無効にする予定ですか?結局のところ、何も変わっていない。 – LarsTech