2017-02-13 72 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

基于我做了很多更多的测试,让我回答我自己的问题。为了使组合框的下拉消息起作用,组合框必须具有焦点,所以代码必须首先将焦点设置到控件上,然后将消息发送到下拉菜单。组合框还有另一个怪癖。如果它下降并因任何原因而失去焦点,则控件将取消下拉菜单,然后销毁该事件。这导致程序没有响应并且用户需要再次重复该动作的印象。我唯一能解决的问题就是在可能的情况下总是取消下拉菜单。