VS2010 にいくつかのチェック ボックス リストを持つ小さなプログラムがあります。ユーザーがリストの 1 つですべてを選択できるようにしたかったので、このループ構造を思いつきました...
private void CheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
Applications.Add(CheckedListBox1.Items[e.Index].ToString());
}
else if (e.NewValue == CheckState.Unchecked)
{
Applications.Remove(CheckedListBox1.Items[e.Index].ToString());
}
}
private void CheckedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (CheckedListBox1.SelectedIndex == 0)
{
for (int i = 1; i < CheckedListBox1.Items.Count; i++)
{
CheckedListBox1.SetItemChecked(i, CheckedListBox1.GetItemChecked(0));
}
}
else
{
if (!CheckedListBox1.GetItemChecked(CheckedListBox1.SelectedIndex))
{
CheckedListBox1.SetItemChecked(0, false);
}
}
}
問題は、これにより「すべて選択」チェックボックスが出力に追加されることです。最初のチェックボックス (「すべて選択」チェック) を含めないようにループを微調整する方法はありますか、それとも別の方法で行う必要がありますか?