Windows フォームに、無効になっているボタンがあります (Enabled = false)。
ユーザーがコンボボックスから項目を選択し、CheckedListBox から少なくとも 1 つの項目をチェックしたときに有効にしたいと考えています。ユーザーは、次のように、Checkbox を介して CheckedListBox 内のすべての項目をチェック/チェック解除できます。
private void checkBoxAll_CheckedChanged(object sender, EventArgs e)
{
for (int x = 0; x < MemberListBox.Items.Count; x++)
{
MemberListBox.SetItemChecked(x, checkBoxAll.Checked);
}
GenPacketBtn.Enabled = MonthAndMemberSelected();
}
だから、これは簡単だと思いました-コンボボックスとCheckedListBoxの両方で何かが選択されていることを確認するだけです:
private bool MonthAndMemberSelected()
{
return ((comboBoxMonth.SelectedIndex >= 0) && (MemberListBox.SelectedIndex >= 0));
}
...そして、次のように、これらのコントロールが変更されたときにボタンを有効または無効にします。
private void comboBoxMonth_SelectedIndexChanged(object sender, EventArgs e)
{
GenPacketBtn.Enabled = MonthAndMemberSelected();
}
private void MemberListBox_SelectedIndexChanged(object sender, EventArgs e)
{
GenPacketBtn.Enabled = MonthAndMemberSelected();
}
チェックボックスは CheckedListBox に対して大きな影響力を持っているため、そのコードを checkBoxAll_CheckedChanged() イベントに追加しました。
private void checkBoxAll_CheckedChanged(object sender, EventArgs e)
{
for (int x = 0; x < MemberListBox.Items.Count; x++)
{
MemberListBox.SetItemChecked(x, checkBoxAll.Checked);
}
GenPacketBtn.Enabled = MonthAndMemberSelected();
}
...そして(必死になってうまくいかなかったので)その Clicked イベントにも:
private void checkBoxAll_Click(object sender, EventArgs e)
{
GenPacketBtn.Enabled = MonthAndMemberSelected();
}
しかし、それは機能しません-ボタンを有効にすると機能しますが、一度有効にすると、CheckedListBoxのすべての項目のチェックを外しても、再び無効になりません。なぜだめですか?