0

これは .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 コンポーネント自体を壊したか、遭遇した奇妙なフレームワークのバグの可能性があると思います。

ここで何が起こっているのかについての洞察は本当にありがたいです。

4

3 に答える 3

1

これはかなりイライラしますが、実際にはフレームワークのバグであることが判明しました (おそらく、Winforms Designer に問題がありました)。

デザイナーでcheckedlistboxを削除して再読み込みすると、機能しました。その他の変更はありません。

于 2013-07-24T02:33:31.030 に答える
-2

「cBListForming」はチェックボックス リストであると想定しています。

あなたが持っているチェックボックスリストの数を確認してください。これが問題の原因である可能性があります。

cBListForming.Count();
于 2013-07-24T02:30:13.227 に答える