Windowsフォームに複数のグループボックスがあり、番号ピッカー&のコンボボックスがあります。チェックボックスが選択されていない場合は、他の要素を無効にします。私はロード時にチェックボックス以外のすべてを無効にして、CheckedChangedイベントのコード化された 'if/else'条件をすべて満たしています。しかし、いくつかのグループボックスは、以前のフォームの別の条件に依存しています。したがって、ユーザーがそのチェックボックスを選択しようとしたが、条件が有効でない場合は、メッセージを表示し、チェックボックスのチェックを外し、グループボックス内の他の要素を無効にして、ユーザーが戻って条件を変更するまで受け入れるか、彼らがいるように物事を進める。メッセージボックスが2回表示されていることを除いて、すべて正常に動作します(つまり、表示、キャンセル、再表示...)。無効にすると、メッセージは一度しか示され、それは一種の醜いですされています。;-(これを行うには良い方法はありますか?C#MessageBoxが2回表示される
private void checkbox1_CheckedChanged(object sender, EventArgs e)
{
if(var1 == "YES")
{
if (checkbox1.Checked)
{
numbox.Enabled = true;
combobox1.Enabled = true;
}
else
{
numbox.Enabled = false;
combobox1.Enabled = false;
}
}
else
{
MessageBox.Show("Required condition is not YES");
checkbox1.Checked = false;
}
}
チェックマークを変更すると、そのイベントが再度実行されます。 「チェックマークを変更しているときにこのコードを実行しない」、またはイベントハンドラを削除して追加するという変数が必要です。 – LarsTech
代わりに直観的で使いやすいUIを作成します。 var1はプロパティでなければならないので、setterはcheckbox1.Enabledプロパティを設定する必要があります。そして、あなたは彼がダミーであることをユーザーに伝える良い理由がなくなりました。 –