OVH Cloud OVH Cloud

ComboBox + Click

7 réponses
Avatar
Nicolas
Bonjour,

Merci tout d'abord =E0 ng qui r=E9pond souvent =E0 mes questions.

Voici mon probl=E8me : j'ai une combobox sur un form.
Dans le load de ce form, je remplis la combobox et je met=20
le premier =E9l=E9ment de cette combo en selection.=20
Malheureusement cette derni=E8re op=E9ration d=E9clenche=20
l'=E9v=E8nement Click de ma combobox et je ne le veux pas.

Comment faire ?

Nicolas

(Je pr=E9cise que ma combobox est de type dropdown list)

7 réponses

Avatar
François Picalausa
Bonjour/soir,

Tu peux passer pas une variable privée qui servira à indiquer s'il faut ou
non ignorer l'événement:
Option Explicit
Private IsLoading As Boolean

Private Sub Combo1_Click()
If Not IsLoading Then
MsgBox Combo1.Text
End If
End Sub

Private Sub Form_Load()
Combo1.AddItem "test0"
Combo1.AddItem "test1"
Combo1.AddItem "test2"
'...

IsLoading = True
If Combo1.ListCount Then Combo1.ListIndex = 0
IsLoading = False
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Nicolas" a écrit dans le message de
news:12e5f01c3f700$dcfc0370$
Bonjour,

Merci tout d'abord à ng qui répond souvent à mes questions.

Voici mon problème : j'ai une combobox sur un form.
Dans le load de ce form, je remplis la combobox et je met
le premier élément de cette combo en selection.
Malheureusement cette dernière opération déclenche
l'évènement Click de ma combobox et je ne le veux pas.

Comment faire ?

Nicolas

(Je précise que ma combobox est de type dropdown list)


Avatar
Kevin Auch
Salut
Si tu fais un maComboBox.SelectedIndex = [0], le premier élement sera
sélectionner sans déclancher le OnClick de la combobox. Tu peux également
utiliser le SelectedItem ou le SelectedText si par défault tu veux du text
et non un élement précedemment créé.

@++

//-----------------------------------------------------
Kevin Auch
MVP .NET
CodeWise Community Member
http://www.dotnet-fr.org
-------------------------------------------------------//
"Nicolas" a écrit dans le message de
news:12e5f01c3f700$dcfc0370$
Bonjour,

Merci tout d'abord à ng qui répond souvent à mes questions.

Voici mon problème : j'ai une combobox sur un form.
Dans le load de ce form, je remplis la combobox et je met
le premier élément de cette combo en selection.
Malheureusement cette dernière opération déclenche
l'évènement Click de ma combobox et je ne le veux pas.

Comment faire ?

Nicolas

(Je précise que ma combobox est de type dropdown list)
Avatar
Kevin Auch
Excuse moi je croyais être en .NET
lol

++

(salut Francois..)

--
//-----------------------------------------------------
Kevin Auch
MVP .NET
CodeWise Community Member
http://www.dotnet-fr.org
-------------------------------------------------------//
"Nicolas" a écrit dans le message de
news:12e5f01c3f700$dcfc0370$
Bonjour,

Merci tout d'abord à ng qui répond souvent à mes questions.

Voici mon problème : j'ai une combobox sur un form.
Dans le load de ce form, je remplis la combobox et je met
le premier élément de cette combo en selection.
Malheureusement cette dernière opération déclenche
l'évènement Click de ma combobox et je ne le veux pas.

Comment faire ?

Nicolas

(Je précise que ma combobox est de type dropdown list)
Avatar
Nicolas
Rebonjour,

Grace à Zoury, j'ai réussi à me dépétrer, merci également
Francois.

Donc voici la solution

En posant que la combobox s'appelle Combo1 et qu'on
veuille mettre le 1er élément (index = 0) comme
préselectionné :

Private Const CB_SETCURSEL As Long = &H14E

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Dans le form_load :

Remplir la Combo1 puis :

SendMessage Me.Combo1.hwnd, CB_SETCURSEL, 0, 0

Et voilà !

Nicolas

-----Message d'origine-----
Bonjour/soir,

Tu peux passer pas une variable privée qui servira à


indiquer s'il faut ou
non ignorer l'événement:
Option Explicit
Private IsLoading As Boolean

Private Sub Combo1_Click()
If Not IsLoading Then
MsgBox Combo1.Text
End If
End Sub

Private Sub Form_Load()
Combo1.AddItem "test0"
Combo1.AddItem "test1"
Combo1.AddItem "test2"
'...

IsLoading = True
If Combo1.ListCount Then Combo1.ListIndex = 0
IsLoading = False
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Nicolas" a écrit dans le


message de
news:12e5f01c3f700$dcfc0370$
Bonjour,

Merci tout d'abord à ng qui répond souvent à mes




questions.

Voici mon problème : j'ai une combobox sur un form.
Dans le load de ce form, je remplis la combobox et je




met
le premier élément de cette combo en selection.
Malheureusement cette dernière opération déclenche
l'évènement Click de ma combobox et je ne le veux pas.

Comment faire ?

Nicolas

(Je précise que ma combobox est de type dropdown list)




.



Avatar
François Picalausa
Bonjour/soir,

Sans doutes en VB.Net...
Mais mpf.vb est fait pour vb "classique" :-)

Pour rappel (j'espère qu'on ne m'en voudra pas d'enfoncer le clou ;-) ):
<Mauvais groupe - réponse standard>
Ce groupe est dédier à VB6 et à ses versions antérieurs. Pour obtenir de
l'aide sur VB.NET ou tous autre produit .NET, pose tes questions dans
les groupes contenant le terme "dotnet" ou "vsnet", tel que :

microsoft.public.fr.dotnet.vb
</Mauvais groupe - réponse standard>

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Kevin Auch" <kevin(at]dotnet-fr.org> a écrit dans le message de
news:
Si tu fais un maComboBox.SelectedIndex = [0], le premier élement
sera sélectionner sans déclancher le OnClick de la combobox. Tu peux
également utiliser le SelectedItem ou le SelectedText si par défault
tu veux du text et non un élement précedemment créé.


Avatar
Zoury
Salut Kevin! :O)

T'as dû te tromper de groupe.. ;O)
la propriété SelectedIndex et l'événement OnClick n'existe pas en VB 6... de
plus Combo1.ListIndex = 0 déclenche bel et bien l'événement Click...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Zoury
> plus Combo1.ListIndex = 0 déclenche bel et bien l'événement Click...



mais j'suis content d'apprendre qu'ils ont modifié ce comportement en .NET..
ça n'était pas très intuitif AMHA... ;O)