【发布时间】:2016-05-28 22:38:44
【问题描述】:
我开发了一个应用程序(使用 vb .net),可以通过单击复选框来切换大写锁定状态。我已经对程序进行了编码,当我单击复选框时,如果选中它,则必须打开大写锁定,如果未选中,则必须关闭它。以下是代码。
Public Class Form1
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
Private Const VK_CAPITAL As Integer = &H14
Private Const VK_SCROLL As Integer = &H91
Private Const VK_NUMLOCK As Integer = &H90
Private Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Private Const KEYEVENTF_KEYUP As Integer = &H2
Private Sub checkbutton_caps_CheckedChanged(sender As Object, e As EventArgs) Handles checkbutton_caps.CheckStateChanged
If checkbutton_caps.Checked = True Then
Call keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0)
checkbutton_caps.Image = Image.FromFile("resources\btn_ico_caps_on.png")
ElseIf checkbutton_caps.Checked = False Then
Call keybd_event(VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
checkbutton_caps.Image = Image.FromFile("resources\btn_ico_caps_off.png")
End If
End Sub
End Class
现在的问题是它没有按预期工作。如果我选中复选框,则只有复选框的图像会更改,而大写锁定状态不会更改。只有当我单击复选框两次时,大写锁定状态才会更改。所以我需要点击复选框两次来切换大写锁定。我怀疑我使用条件语句的方式有问题。
【问题讨论】:
-
...为什么?你的大写锁定键坏了吗?
-
@CodyGray 不,它没有坏,我只是想创建一个虚拟键盘。
-
开始 -> 运行 -> osk.exe