私はフォーム上のカスタムコントロールの一部としてCheckBoxを持っています。 Validatingイベントを処理して、最大5つのチェックボックスがチェックされていることを確認します。すでに5件がチェックされている場合、私はそのイベントをキャンセルします。これはすばらしいことです。他のコントロールから発生したイベントを検証していますか?
ただし、5つのチェックボックスをオンにすると、すべてのイベントがキャンセルされます(最初にチェックされたCheckBoxのチェックを外すことを除く)。これは、ボタンの押下、テキストボックスのフォーカス、コンボのドロップダウン、アプリケーションの終了が機能していないことを意味します。送信者オブジェクトはまだCheckBoxです。なぜそれが引き起こされているのか分かりません。
私が行うたびにチェックボックスのValidatingイベントがトリガーされる理由何か? (私はそれがチェックボックスコントロールをクリックするとトリガされたと思っていただろう)。 「検証中」イベントを正しい方法で使用していますか?
追加の奇妙なもの:イベントハンドラがあるにもかかわらず、5番目のチェックボックスを選択または選択解除すると、イベントが処理されません。同じチェックボックスが4番目または6番目のチェックボックスである場合、検証イベントをトリガーします。
マイコード:親フォーム内:
private List<MyCustomClass> GetSelectedItems()
{
List<MyCustomClass> result = new List<MyCustomClass>();
foreach (MyCustomClass c in listOfControls)
{
if (c.Selected())
{
result.Add(c);
}
}
return result;
}
private void validate(object sender, CancelEventArgs e)
{
if (GetSelectedItems().Count == 5)
{
e.Cancel = true;
}
}
MyCustomClassのSelected
方法は、単にchkBox.Checkedを返します。
「CheckBoxの入力」とはどういう意味ですか? – Smashery
このチェックボックスをクリックすると、 '!chkBox.Checked'の値を受け取ります... – IAbstract
' chkBox.Checked'の既存のチェックボックスをすべて調べて、 'Checked' 'true'の場合、' CancelEventArgs.Cancel'を 'false'に設定します。 – Smashery