Pergunta : Porque faz do fogo do checkedListBox checkchanged ao não estalar no artigo

Eu estou usando VB.Net 2008 em um formulário das janelas.  Eu estou usando um CheckedListBox que tenha diversos artigos nele.  Diversos artigos são verific e não verific.   A parte estranha é quando eu tenho um artigo selecionado, mas estala sobre a parte mais inferior da lista onde não há nenhuma fileira, ele está mudando o estado do checkbox mesmo quando eu não estou em qualquer lugar perto do checkbox!   Como faço eu parar isto do acontecimento.  Meus usuários estão indo freak para fora se vêem o checkbox mudar quando estalam sobre a área branca de CheckedListbox onde não há nenhum artigo.   O problema é este evento está ateando fogo à outra lógica que eu não quero acontecer a menos que significarem realmente verific o artigo.  Eu preciso de saber quando verific realmente na caixa não no espaço branco falso na caixa.   Nós poderíamos usar HitTest em outros controles, mas HitTest não é uma opção neste control

By que a maneira CheckOnClick é ajustada ao false

It parece ridícula que os eventos de ItemCheck e de SelectedValueChanged ateiam fogo ao estalar no espaço branco de um CheckedListbox…   Eu não ver nenhuma maneira de prender que um artigo estêve verific realmente/não-verificado.  Eu não quero este evento ateado fogo no artigo selecionado atual quando eu estalo sobre o espaço branco sob os artigos.  Soa como um erro a mim, mas talvez eu falto algo… o

I ainda preciso de poder usar o evento de SelectedIndexChange para saber quando um artigo é selecionado, mas eu igualmente preciso de saber quando um checkbox real no controle é verific/não-verificado corretamente não estalando no espaço branco abaixo da ajuda de items.

Any seria appreciated
class= do

Resposta : Porque faz do fogo do checkedListBox checkchanged ao não estalar no artigo

Você pode herdar do CheckedListBox e impedir a ação indesejável como este:
(apenas a batida “configuração” e seu controle novo deve aparecer na parte superior da caixa de ferramentas)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Classe pública MyCheckedListBox
    Herda CheckedListBox

    Const confidencial WM_LBUTTONDOWN como o inteiro = o &H201
    Const confidencial WM_LBUTTONUP como o inteiro = o &H202
    Const confidencial WM_LBUTTONDBLCLK como o inteiro = o &H203

    Protegido cancela WndProc secundário (ByRef m como System.Windows.Forms.Message)
        Selecionar o caso m.Msg
            Encaixotar WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK
                Escurecer a pinta como o ponto = o Me.PointToClient (Cursor.Position)
                Para i como o inteiro = o Me.TopIndex a Me.Items.Count - 1
                    Se Me.GetItemRectangle (i). Contem (pinta) então
                        MyBase.WndProc (m)
                        Retirar o submarino
                    Terminar se
                Em seguida
                Retirar o submarino 'deixou o clique ocorreu no espaço branco: suprimir a ação do defeito

        Terminar seleto
        MyBase.WndProc (m)
    Terminar o submarino

Terminar a classe
Outras soluções  
 
programming4us programming4us