Frage : Warum checkedListBox Feuercheckchanged beim Klicken nicht auf dem Einzelteil tut

Ich verwende VB.Net 2008 in einer Fensterform.  Ich verwende ein CheckedListBox, das einige Einzelteile in ihr hat.  Einige Einzelteile werden überprüft und überprüft nicht.   Das merkwürdige Teil ist, wenn ich ein Einzelteil vorwählen lasse, aber klickt an den untereren Teil der Liste, in der es keine Reihen gibt, es ändert den Zustand des Checkbox, selbst wenn ich nirgends nahe dem Checkbox bin!   Wie ich tue, dieses vom Vorkommnis stoppen.  Meine Benutzer werden heraus ausflippen, wenn sie den Checkbox sehen zu ändern, wenn sie an den weißen Bereich von CheckedListbox klicken, in dem es keine Einzelteile gibt.   Das Problem ist dieses Ereignis abfeuert andere Logik, dass ich nicht geschehen möchte, es sei denn sie wirklich bedeuten, das Einzelteil zu überprüfen.  Ich muss wissen, wann sie wirklich auf dem Kasten nicht auf falschem weißem Raum im Kasten überprüfen.   Wir könnten HitTest auf anderen Kontrollen verwenden, aber HitTest ist nicht eine Wahl auf diesem control

übrigens CheckOnClick wird eingestellt auf false

It scheint lächerlich, dass die ItemCheck und SelectedValueChanged Ereignisse abfeuern, beim Klicken auf dem weißen Raum von einem CheckedListbox…   Ich sehe keine Weise einzuschließen, dass ein Einzelteil wirklich/ungeprüft überprüft wurde.  Ich wünsche nicht dieses Ereignis, das auf dem gegenwärtigen vorgewählten Einzelteil abgefeuert wird, wenn ich an den weißen Raum unter den Einzelteilen klicke.  Klingt mir wie eine Wanze, aber möglicherweise fehle ich etwas…

I muss noch in der Lage sein, das SelectedIndexChange Ereignis zu verwenden, um zu wissen, wann ein Einzelteil vorgewählt wird, aber ich muss auch wissen, wann ein tatsächlicher Checkbox in der Steuerung/ungeprüft richtig nicht indem man auf weißem Raum unterhalb der items.

Any Hilfe klickt, würde sein appreciated
überprüft wird

Antwort : Warum checkedListBox Feuercheckchanged beim Klicken nicht auf dem Einzelteil tut

Sie können vom CheckedListBox übernehmen und die nicht wünschenswerte Tätigkeit so verhindern:
(gerade Schlag „Bau“ und Ihre neue Steuerung sollte an der Oberseite des Werkzeugkastens erscheinen)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Allgemeine Kategorie MyCheckedListBox
    Übernimmt CheckedListBox

    Privates Const WM_LBUTTONDOWN als ganze Zahl = &H201
    Privates Const WM_LBUTTONUP als ganze Zahl = &H202
    Privates Const WM_LBUTTONDBLCLK als ganze Zahl = &H203

    Geschützt hebt VorWndProc auf (ByRef m als System.Windows.Forms.Message)
        Fall m.Msg vorwählen
            WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK umkleiden
                Pint als Punkt = Me.PointToClient (Cursor.Position) verdunkeln
                Für i als ganze Zahl = Me.TopIndex zu Me.Items.Count - 1
                    Wenn Me.GetItemRectangle (i). Enthält (Pint) dann
                        MyBase.WndProc (m)
                        Unterseeboot herausnehmen
                    Beenden wenn
                Zunächst
                Unterseeboot herausnehmen 'ließ Klicken auftrat im weißen Raum: Rückstellungstätigkeit unterdrücken

        Auserwähltes beenden
        MyBase.WndProc (m)
    Unterseeboot beenden

Kategorie beenden
Weitere Lösungen  
 
programming4us programming4us