2017-02-13 18 views
0

我正在更新掃描條形碼的現有應用程序,並在運行於Windows Compact Framework 3.5的VB.net中編寫。該掃描儀是一款運行Windows Mobile手持設備6.5的POCKETPC。我有一個組合框DropDownStyle='DropDown'。我想以編程方式下拉框。Windows壓縮框架3.5 combobox下拉列表

我已經編寫如下:

<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) 

返回代碼爲1,但沒有下拉發生。我錯過了什麼?

回答

0

基於我做了很多更多的測試,讓我回答我自己的問題。爲了使組合框的下拉消息起作用,組合框必須具有焦點,所以代碼必須首先將焦點設置到控件上,然後將消息發送到下拉菜單。組合框還有另一個怪癖。如果它下降並因任何原因而失去焦點,則控件將取消下拉菜單,然後銷燬該事件。這導致程序沒有響應並且用戶需要再次重複該動作的印象。我唯一能解決的問題就是在可能的情況下總是取消下拉菜單。