5つのチェックボックスを持つcheckedListBoxがあり、最初のものを "すべて"にします。 私はこのコードを書いたが、私は無限ループを取得しています:CheckBox(C#winForms)の他のすべてのチェックボックスをチェック/チェック解除する1つのチェックボックス
private void chkLstBx_ItemCheck(object sender, ItemCheckEventArgs e)
{
// ----- Get the name of the CheckBox that's changed: -----
string selected = chkLstBx.SelectedItem + "";
// ----- If "All" changed: -----
if (selected.Equals("All"))
// ----- to TRUE(from unchecked): -----
if (("" + (chkLstBx.GetItemCheckState(0))).Equals("Unchecked"))
for (int i = 1; i < chkLstBx.Items.Count; i++)
**chkLstBx.SetItemChecked(i, true);**
else // ----- to FALSE(from checked): -----
for (int i = 1; i < chkLstBx.Items.Count; i++)
chkLstBx.SetItemChecked(i, false);
// -----------------------------------------------
// -------------- REST OF CODE HERE --------------
// -----------------------------------------------
}
太線(**)は、残念ながら再帰的に...選択した無限ループになる...再び「chkLstBx_ItemCheck」のコール常に「すべて」であり、まだ「未チェック」であり、iはもう一度1から始まります。 どうすればこの問題を解決できますか?
あなたは男です:)働いて! "もっと良いのは、すべてのアイテムの参照を保持することです" これは理想的ですが、特定のcheckedListBoxはCheckBoxへの参照を個別に許可しないため、回避する必要がありました。 –