Cuestión : Porqué hace del fuego del checkedListBox checkchanged al no chascar en el artículo

Estoy utilizando VB.Net 2008 en una forma de las ventanas.  Estoy utilizando un CheckedListBox que tenga varios artículos en ella.  Se comprueban y no se comprueban varios artículos.   ¡La parte extraña es cuando hago un artículo seleccionar, pero chasca encendido la parte más inferior de la lista donde no hay filas, él está cambiando el estado del checkbox incluso cuando no estoy dondequiera cerca del checkbox!   Cómo lo hago parar esto del suceso.  Mis usuarios van a freak hacia fuera si ven el checkbox cambiar cuando chascan encendido el área blanca de CheckedListbox donde no hay artículos.   El problema es este acontecimiento está encendiendo la otra lógica que no quiero suceder a menos que signifiquen realmente comprobar el artículo.  Necesito saber cuándo comprueban realmente la caja no en espacio blanco falso en la caja.   Podríamos utilizar HitTest en otros controles, pero HitTest no es una opción en este control

a propósito CheckOnClick se fija al false

It parece ridículo que los acontecimientos de ItemCheck y de SelectedValueChanged encienden al chascar en el espacio blanco de un CheckedListbox…   No veo ninguna manera de atrapar que un artículo fue comprobado realmente/desenfrenado.  No quiero este acontecimiento encendido en el artículo seleccionado actual cuando chasco encendido el espacio blanco bajo artículos.  Suena como un insecto yo, pero falto quizá algo… el

I todavía necesito poder utilizar el acontecimiento de SelectedIndexChange para saber cuándo se selecciona un artículo, pero también necesito saber cuándo un checkbox real en el control es comprobado/desenfrenado no chascando en el espacio blanco debajo de la ayuda de items.

Any sería correctamente appreciated
class= del

Respuesta : Porqué hace del fuego del checkedListBox checkchanged al no chascar en el artículo

Usted puede heredar del CheckedListBox y prevenir la acción indeseable como esto:
(apenas el golpe “estructura” y su nuevo control debe aparecer en la tapa de la caja de herramientas)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Clase pública MyCheckedListBox
    Hereda CheckedListBox

    Const privado WM_LBUTTONDOWN como número entero = &H201
    Const privado WM_LBUTTONUP como número entero = &H202
    Const privado WM_LBUTTONDBLCLK como número entero = &H203

    Protegido elimina WndProc secundario (ByRef m como System.Windows.Forms.Message)
        Seleccionar el caso m.Msg
            Encajonar WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK
                Amortiguar la pinta como el punto = Me.PointToClient (Cursor.Position)
                Para i como número entero = Me.TopIndex a Me.Items.Count - 1
                    Si Me.GetItemRectangle (i). Entonces contiene (pinta)
                        MyBase.WndProc (m)
                        Salir el submarino
                    Terminar si
                Después
                Salir el submarino 'dejó tecleo ocurrió en el espacio blanco: suprimir la acción del defecto

        Terminar selecto
        MyBase.WndProc (m)
    Terminar el submarino

Terminar la clase
Otras soluciones  
 
programming4us programming4us