Questione : Perché fa del fuoco del checkedListBox checkchanged quando non si scattano sull'articolo

Sto utilizzando VB.Net 2008 in una forma delle finestre.  Sto usando un CheckedListBox che ha parecchi articoli in esso.  Parecchi articoli sono controllati e non sono controllati.   La parte sconosciuta è quando faccio selezionare un articolo, ma scatta sopra la parte più bassa della lista in cui non ci sono file, esso sta cambiando la condizione della scatola di controllo anche quando non sono dovunque vicino alla scatola di controllo!   Come faccio arrestare questo dall'avvenimento.  I miei utenti stanno andando freak fuori se vedono la scatola di controllo cambiare quando scattano sopra la zona bianca di CheckedListbox dove non ci sono articoli.   Il problema è questo evento sta infornando l'altra logica che non voglio accadere a meno che realmente significhino controllare l'articolo.  Devo sapere quando realmente verificano la scatola non su spazio bianco simulato nella scatola.   Potremmo usare HitTest su altri comandi, ma HitTest non è un'opzione su questo control

a proposito CheckOnClick è regolato a false

It sembra ridicolo che gli eventi di SelectedValueChanged e di ItemCheck infornino quando si scattano sullo spazio bianco di un CheckedListbox…   Non vedo alcun senso intrappolare che un articolo realmente è stato controllato/incontrollato.  Non voglio questo evento infornato sull'articolo selezionato corrente quando scatto sopra lo spazio bianco ai punti.  Suona come un insetto me, ma forse manco qualcosa…

I ancora devo potere usare l'evento di SelectedIndexChange per sapere quando un articolo è selezionato, ma inoltre devo sapere quando una scatola di controllo reale nel controllo è controllata/incontrollato correttamente non scattandosi sullo spazio bianco sotto l'aiuto di items.

Any sarebbe appreciated
class= del

Risposta : Perché fa del fuoco del checkedListBox checkchanged quando non si scattano sull'articolo

Potete ereditare dal CheckedListBox ed impedire l'azione indesiderabile come questo:
(appena il colpo “configurazione„ ed il vostro nuovo controllo dovrebbe comparire alla parte superiore della cassetta portautensili)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Codice categoria pubblico MyCheckedListBox
    Eredita CheckedListBox

    Const riservato WM_LBUTTONDOWN come il numero intero = &H201
    Const riservato WM_LBUTTONUP come il numero intero = &H202
    Const riservato WM_LBUTTONDBLCLK come il numero intero = &H203

    Protettivo ignora WndProc secondario (ByRef m. come System.Windows.Forms.Message)
        Selezionare il caso m.Msg
            Mettere WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK
                Oscurare la pinta come punto = Me.PointToClient (Cursor.Position)
                Per la i come il numero intero = Me.TopIndex a Me.Items.Count - 1
                    Se Me.GetItemRectangle (i). Allora contiene (pinta)
                        MyBase.WndProc (m)
                        Uscire il sommergibile
                    Concluder se
                Dopo
                Uscire il sommergibile 'ha lasciato lo scatto si è presentato nello spazio bianco: sopprimere l'azione di difetto

        Concludere prescelto
        MyBase.WndProc (m)
    Concludere il sommergibile

Concludere il codice categoria
Altre soluzioni  
 
programming4us programming4us