J'ai créé un contrôle utilisateur pour remplacer les boutons de commandes standards. Mais j'ai un problème : je n'arrive pas à utiliser correctement Default et Cancel de la même façon que les boutons standards. J'ai parcouru une peu le site et le net mais je n'arrive pas à résoudre mon problème.
J'ai bien mis DefaultCancel à True pour mon contrôle. J'ai donc bien accès à Default et Cancel quand je place mon contrôle dans un formulaire. Mais si je mets Defaut à True, mon contrôle ne réagit que si sa fonction AccessKeyPress est définie (en gérant la touche de code 13). Et dans ce cas, que je mette Default à True ou False ne change rien. Pire, si je rajoute un bouton standard ou un autre de mes boutons et que je le mets en Default=True, c'est toujours le premier bouton qui réagit.
Bref, je n'arrive pas à m'en sortir, j'ai besoin de votre aide...
A voir également:
Comment gérer Default et Cancel (et AccessKeyPress) ?
Private Sub UserControl_AccessKeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyEscape Then
'# On a pressé Echap
ElseIf KeyAscii = vbKeyReturn Then
'# On a pressé Entrée
Else
'# On a pressé Alt+toucheD'accès
End If
End Sub
Bon je viens de trouver la solution à mon problème...
A priori mon premier bouton avait toujours le focus. Je ne le voyais pas car je ne gérais pas la notion de focus sur mon contrôle... Donc en fait quand j'appuyais sur ENTREE juste après l'affichage de ma fenêtre, j'étais toujours sur lui, voilà pourquoi c'était toujours lui qui répondait...
En tout cas merci Renfield ! Ce merci vaut aussi (j'en profite) pour toutes tes sources/remarques/réponses
qui m'ont été souvent utiles... Merci.
Oui Renfield, j'avais bien compris le principe. J'avais d'ailleurs essayé à peu près ce que tu dis :
Private Sub UserControl_AccessKeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
RaiseEvent Click
End If
End Sub
Malheureusement, sur mon formulaire j'ai 2 boutons (2 de mes contrôles), et donc c'est toujours le premier qui est appelé, même si le premier à Default=False et le second Default=True.