チェックリストボックスのチェック項目が機能しない

私はPictureBoxの図を描画するためのこのコードを持っています:

    private void ChkLiboData_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        Refresh();
        try
        {
            foreach (DataClass d in ChkLiboData.CheckedItems)
            {
                if (d.r == null && d.g == null && d.b == null)
                {
                    Random r = new Random();

                    d.r = r.Next(0, 255);
                    d.g = r.Next(0, 255);
                    d.b = r.Next(0, 255);

                    DrawDiagram(d.DataList, (int)d.r, (int)d.g, (int)d.b);
                }
                else
                {
                    DrawDiagram(d.DataList, (int)d.r, (int)d.g, (int)d.b);
                }
                Refresh();
            }
        }
        catch { }
    }

しかし、デバッグモードでアイテムをチェックして ChkLiboData.CheckedItems を見たとき、 ChkLiboData.CheckedItems のアイテムが見えませんでした。 私は何をしなければならないのですか?

1
追加された 著者 Hans Passant,

1 答え

ItemCheck イベントは、アイテムのチェックされたステータスが変更しようとしている場合に発生します。それは既に変更されていません。私はその例を示してみましょう。 CheckedListBoxには、 "A"、 "B"、 "C"の3つの項目があります。項目はチェックされません。ここで、ユーザは項目「A」をチェックする。 ItemCheck イベントが発生します。プロパティ CheckedItems には項目がありません。 ItemCheckEventArgs 型のargs e では、チェック状態が変更されている項目のインデックス、( CurrentValue 新しいチェック状態を含むプロパティ NewValue が含まれています。その後、ユーザーが項目「B」をチェックすると、イベントは再び発生します。今回は、 CheckedItems プロパティに1つの項目 "A"が含まれています。そう。

BTW:ItemCheckイベントで NewValue プロパティを設定できます。これはあなたに可能性を与えます。アイテムがチェックされないようにします。

4
追加された
@ahmadalishafiee:私はあなたのコメントに応じて私の答えを変更しました。
追加された 著者 Fischermaen,
じゃあどうすればいい?!?
追加された 著者 ahmadali shafiee,
ありがとう、それは私を助けた
追加された 著者 ahmadali shafiee,