我正在更新扫描条形码的现有应用程序,并且是在Windows Compact Framework 3.5上运行的VB.net中编写的。扫描仪是运行Windows mobile手持设备6.5的POCKETPC。我有一个组合框DropDownStyle='DropDown'
。我想以编程方式下拉框。
我编写了以下代码:
<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 :(得分:0)
基于我所做的更多测试,让我回答我自己的问题。为了使组合框的下拉消息起作用,组合框必须具有焦点,因此代码必须首先将焦点设置为控件,然后将消息发送到下拉列表。组合框还有另一个怪癖。如果它被降下并且由于任何原因失去焦点,则控制取消下拉,然后销毁该事件。这会导致程序没有响应并且用户需要再次重复操作的印象。我能想到的唯一解决办法是尽可能取消下拉列表。