2017-02-13 5 views
0

Je suis en train de mettre à jour une application existante qui scanne les codes à barres et est écrite dans VB.net fonctionnant sous Windows compact framework 3.5. Le scanner est un POCKETPC exécutant Windows Mobile Handheld 6.5. J'ai une combobox DropDownStyle='DropDown'. Je veux programmer la boîte.Windows compact framework 3.5 liste déroulante combobox

Je codé les suivantes:

<DllImport("coredll.dll", SetLastError:=True)> _ 
    Public Shared Function SendMessage(ByVal hWnd As IntPtr, _ 
             ByVal Msg As Integer, _ 
             ByVal wParam As Integer, _ 
             ByVal lParam As Integer) As IntPtr 
    End Function 
    Const CB_SHOWDROPDOWN As Int32 = &H14F 
    SendMessage(cmbVisitoringUnit.Handle, CB_SHOWDROPDOWN, 1, 0) 

Le code de retour est 1, mais pas dropdown a lieu. Qu'est-ce que je rate?

Répondre

0

Basé sur beaucoup plus de tests que j'ai fait, permettez-moi de répondre à ma propre question. Pour que le message déroulant de la zone de liste déroulante fonctionne, la zone de liste déroulante doit avoir le focus, donc le code doit d'abord définir le focus sur le contrôle, puis envoyer le message à la liste déroulante. Il y a une autre bizarrerie avec le combobox. Si elle est réduite et que les pertes se concentrent pour une raison quelconque, le contrôle annule la liste déroulante et détruit l'événement. Cela donne l'impression que le programme ne répond pas et que l'utilisateur doit répéter l'action à nouveau. La seule solution que je pourrais trouver est de toujours annuler la liste déroulante si possible.