我正在开发一款软件,我们需要一个校准表格,我们希望安装团队可以使用这些校准表来校准相机。
如果客户需要在将来进行校准,也可以使用此屏幕。
然而,由于它暴露了一些相当低级别和技术配置的事实,我们不希望客户访问此表单,如果它可以避免,并且将破坏我们将必须修复的东西。
因此,我被要求在键的组合上显示此表格,这些键包括在键入单词时按住Ctrl键。 (很像旧的PC作弊)
我的问题是我知道如何使用修饰符(例如ctrl + A)拦截简单按键,但不知道带修饰符的键入词。
如果有人能够告诉我如何最好地实现这样的功能,我将非常感激。
我在Windows窗体环境中使用Visual Studio 2012和VB.net
答案 0 :(得分:3)
这是一个简化的示例(在一个全新的winforms项目中工作,带有一个名为Button1
的按钮和名为Label1
的标签,手动放置在表单上) - 当控制键是时,检查有效的秘密序列释放。
Public Class Form1
Dim word As String
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.Control AndAlso e.KeyCode <> Keys.ControlKey Then word &= getChar(e)
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
If e.KeyData = Keys.ControlKey Then
'<---- this is where you need to check against a valid secret sequence
Label1.Text = word
word = String.Empty
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MessageBox.Show(word)
End Sub
Private Function getChar(e As KeyEventArgs) As Char
Dim keyValue As Integer = e.KeyValue
If Not e.Shift AndAlso keyValue >= CInt(Keys.A) AndAlso
keyValue <= CInt(Keys.Z) Then
Return ChrW(keyValue + 32)
End If
Return ChrW(keyValue)
End Function
End Class
从C#转换getChar
(赠送给this answer)。
答案 1 :(得分:1)
您可以声明处理按键的子外字符串属性。在那个子程序中,每次你捕获ctrl +的东西时,你都要把它添加到字符串中并检查它是否包含你想要的单词。