以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]KeyDown事件为什么有时触发不了  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=153766)

--  作者:lianghanyu
--  发布时间:2020/8/22 8:28:00
--  [求助]KeyDown事件为什么有时触发不了

建立了一个“ComboBox”控件,  用来筛选用的。 

 

在控件的“KeyDown”代码如下:

 

If e.KeyCode = Keys.enter Then
Dim filter As String
Dim sts() As String = {"项目编号"}
For Each st As String In sts
    Dim  val As String = e.Form.Controls(st).value
    If val > "" Then
        val = val.Replace("*","[*]")
        If filter = "" Then
            filter = st & " like \'*" & val & "*\'"
        Else
            filter = filter & " and " & st & " like \'*" & val & "*\'"
        End If
    End If
Next


Tables("项目总表").Filter = filter
End If

 

原本意图是在控件中输入一些文字,然后在表中筛选。

 

但是实际使用的时候 ,往往要按两次回车键才可以。如下图示演示。

 

 

其实我在输完“DC35”后按了一次回车键的,但是它不筛选,而是把焦点激活到了“详细信息”的按钮上。

 

当我再次把ComboBox控件选中,然后再按一次回车键,这时才会有执行筛选动作。

 

为什么会这样呢?

 

为什么我第一次按回车时它不按我代码执行筛选,而是跳到了另一个控件上?

 

这样有实际使用时很不友好,每次都要这样按两次回车键。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:按回车不会筛选1.gif
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/8/22 9:33:00
--  
Dim  val As String = e.Form.Controls(st).value
改为
Dim  val As String = e.sender.text

--  作者:lianghanyu
--  发布时间:2020/8/22 9:40:00
--  

谢谢,完美解决,太感谢了!!!!


--  作者:有点蓝
--  发布时间:2020/8/22 9:45:00
--  
value要离开焦点才能获取到值的