これは .NET 3.5 Winforms プロジェクトです。
チェックボックスリストのチェックボックスをプログラムでチェックしようとすると、奇妙なエラーが発生します。
for (int i = 0; i < 5; i++)
{
cBListForming.Items.Add((i + 1).ToString());
cBListForming.SetItemChecked(i, true);
}
したがって、1 から 5 までの 5 つの項目が追加され、追加されたチェックボックスがデフォルトでチェックされます。驚くべきことは何もありません。
ループの最初の繰り返しではすべて正常に動作しますが、2 回目の繰り返し (i == 1) では SetItemChecked が例外をスローします。
System.ArgumentOutOfRange {"インデックスが範囲外です。負ではなく、コレクションのサイズより小さくなければなりません。\r\nパラメータ名: index"}
最初のチェックボックスも視覚的にチェックされていることがわかります。残りは上記の例外によるものではありません。
これはかなり不可解です。テスト目的で、最初に項目を追加して、後でプログラムで 2 回目のループでチェックしようとしましたが、チェックボックスの数が 5 であっても同じ問題が発生します。
代わりに SetItemCheckState を使用してみました。繰り返しますが、同じ問題です。
CheckedListBox コンポーネント自体を壊したか、遭遇した奇妙なフレームワークのバグの可能性があると思います。
ここで何が起こっているのかについての洞察は本当にありがたいです。