Vraag : Waarom checkchanged een checkedListBoxbrand toen het klikken niet op het punt

Ik gebruik VB.Net 2008 in een venstersvorm.  Ik gebruik een CheckedListBox die verscheidene punten daarin heeft.  Verscheidene punten worden gecontroleerd en niet gecontroleerd.   Het vreemde deel is wanneer ik een geselecteerd punt heb, maar op het lagere deel van de lijst waar er geen rijen zijn klik, verandert het de staat van checkbox zelfs wanneer ik niet overal dichtbij checkbox ben!   Hoe ik dit van het gebeuren tegenhoud.  Mijn gebruikers gaan naar buitenissig uit als zij de checkbox verandering zien wanneer zij op het witte gebied van CheckedListbox klikken waar er geen punten zijn.   Het probleem is deze gebeurtenis in brand steekt andere logica geen die ik wil gebeuren tenzij zij werkelijk betekenen om het punt te controleren.  Ik moet weten wanneer zij werkelijk op de doos niet op valse witte ruimte in de doos controleren.   Wij konden HitTest op andere controles gebruiken, maar HitTest is geen optie op dit control

By de manier CheckOnClick aan false

It belachelijk schijnt wordt geplaatst dat de gebeurtenissen ItemCheck en SelectedValueChanged wanneer het klikken op de witte ruimte van een CheckedListbox… in brand steken   Ik zie geen manier op te sluiten dat een punt werkelijk/ongecontroleerd werd gecontroleerd.  Ik wil deze die gebeurtenis niet op het huidige geselecteerde punt in brand wordt gestoken wanneer ik op de witte ruimte onder de punten klik.  Geluiden zoals een insect aan me, maar misschien ik iets…/>I nog behoefte


Any zou zijn appreciated
wordt gecontroleerd

Antwoord : Waarom checkchanged een checkedListBoxbrand toen het klikken niet op het punt

U kunt van CheckedListBox erven en de ongewenste actie als dit verhinderen:
(enkel „Bouwstijl“ en uw nieuwe controle zou raken bij de bovenkant van ToolBox moeten verschijnen)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Openbare Klasse MyCheckedListBox
    Erft CheckedListBox

    Privé Const WM_LBUTTONDOWN als Geheel = &H201
    Privé Const WM_LBUTTONUP als Geheel = &H202
    Privé Const WM_LBUTTONDBLCLK als Geheel = &H203

    Beschermd treedt SubWndProc (ByRef m als System.Windows.Forms.Message) met voeten
        Selecteer Geval m.Msg
            Geval WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK
                Schemerig PT als Punt = Me.PointToClient (Cursor.Position)
                Voor I als Geheel = Me.TopIndex aan Me.Items.Count - 1
                    Als Me.GetItemRectangle (I). Bevat (PT) Dan
                        MyBase.WndProc (m)
                        Sub van de uitgang
                    Eind als
                Daarna
                Verlaten Sub van de uitgang 'klikt voorgekomen in de witte ruimte: onderdruk standaardactie

        Beëindig Uitgezocht
        MyBase.WndProc (m)
    Sub van het eind

De Klasse van het eind
Andere oplossingen  
 
programming4us programming4us