我有一个0-9的屏幕数字键盘,当用户点击该号码的按钮(本质上是一个触摸屏键盘)时,我正试图将键击发送到一个复选框。有几个文本框,我想将它发送到当前有插入符号的那个。我尝试过SendKeys.Send("1")
,但不发送它。这样做的最佳方式是什么?
您遇到的问题是因为当用户点击您的任何按钮时,该按钮会获得焦点并且文本框失去焦点,因此任何按键都会被发送到具有焦点的控件,即按钮。
解决这个问题的一种可能方法是使用全局变量来存储对最后一个文本框的引用,使其不再关注表单(通过每个文本框的On Exit
或On Lost Focus
事件),然后用一个文本框填充该存储文本框的内容。适当的值作为每个按钮的On Click
事件的一部分。
一个非常简单的例子可能是:
Dim LastTextBox As TextBox
Private Sub TextBox1_Exit(Cancel As Integer)
Set LastTextBox = TextBox1
End Sub
Private Sub TextBox2_Exit(Cancel As Integer)
Set LastTextBox = TextBox2
End Sub
Private Sub Button1_Click()
If Not LastTextBox Is Nothing Then LastTextBox = "1"
End Sub
Private Sub Button2_Click()
If Not LastTextBox Is Nothing Then LastTextBox = "2"
End Sub