Vb.net 如何在Visual Basic中将键盘事件连接到按下按钮?

Vb.net 如何在Visual Basic中将键盘事件连接到按下按钮?,vb.net,Vb.net,我在学校里做了一个刽子手游戏作为一个项目,我们不能用我们游戏中的按钮来制作键盘。我们有29个带有字母A-Å的按钮,我们只能使用鼠标垫/鼠标按下它们。我正在用VisualBasic编程 公开课表格1 私有ord_列为字符串 作为字符串的专用ord 私有r作为新的随机变量 私生子 Private Sub btn_click(ByVal btn As Button) btn.Enabled = False Call check(btn.Text) End Sub Private

我在学校里做了一个刽子手游戏作为一个项目,我们不能用我们游戏中的按钮来制作键盘。我们有29个带有字母A-Å的按钮,我们只能使用鼠标垫/鼠标按下它们。我正在用VisualBasic编程

公开课表格1 私有ord_列为字符串 作为字符串的专用ord 私有r作为新的随机变量 私生子

Private Sub btn_click(ByVal btn As Button)
    btn.Enabled = False

    Call check(btn.Text)

End Sub

Private Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click,
    Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click,
    Button17.Click, Button18.Click, Button19.Click, Button20.Click, Button21.Click, Button22.Click, Button23.Click, Button24.Click, Button25.Click, Button26.Click,
    Button27.Click, Button28.Click, Button29.Click

    Dim btn As Button = DirectCast(sender, Button)

    Call btn_click(btn)
End Sub
“这对我不起作用

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    For Each btn As Button In Panel1.Controls.OfType(Of Button)()
        If e.KeyCode.ToString.ToLower = btn.Text.ToLower Then
            Call btn_click(btn)
        End If
    Next
End Sub



Private Sub check(ByVal letter As String)
    If ord.Contains(letter.ToLower) Then
        'Sjekke om bokstaven passer i ordet.
        Dim indexes As New List(Of Integer)
        For i As Integer = 0 To ord.Length - 1
            If ord.Substring(i, 1).ToLower = letter.ToLower Then
                indexes.Add(i)
            End If
        Next
        'Denne gjør at når du gjetter rett bokstav så blir den skrevet ut i tekstboksen.
        For Each Int As Integer In indexes
            TextBox1.Text = TextBox1.Text.Remove(Int * 4, 4).Insert(Int * 4, letter.ToUpper & "   ")
        Next
        'Du har vunnet
        If TextBox1.Text.Contains("_") = False Then
            MessageBox.Show("Gratulerer, du har vunnet!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
            Call nyttspill()
        End If

    Else
        'Du gjettet feil bokstav.
        feil += 1

        Select Case feil
            Case 1
                Head.Visible = True
            Case 2
                Body.Visible = True
            Case 3
                Left_arm.Visible = True
            Case 4
                Right_arm.Visible = True
            Case 5
                Left_leg.Visible = True
            Case 6
                Right_leg.Visible = True
                MessageBox.Show("Beklager, men du har tapt. Ordet du skulle ha var: " & ord, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
                Call nyttspill()
        End Select
    End If
End Sub

Private Sub nyttspill()
    'Starter spillet på nytt og gjemmer kroppen.
    Head.Visible = False
    Body.Visible = False
    Left_arm.Visible = False
    Right_arm.Visible = False
    Left_leg.Visible = False
    Right_leg.Visible = False

    'Setter antall feil til 0.
    feil = 0

    'Velger nytt random ord.
    Dim i As Integer = r.Next(0, ord_liste.Count)
    ord = ord_liste(i)

    'Viser hvor langt det er.
    TextBox1.Clear()
    For int As Integer = 0 To ord.Length - 1
        TextBox1.Text &= "__  "
    Next

    'Knappene blir "utrykket" igjen.
    For Each btn As Button In Panel1.Controls.OfType(Of Button)()
        btn.Enabled = True
    Next

End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim del() As String = {Environment.NewLine}
    ord_liste = My.Resources.ord_fil.Split(del, StringSplitOptions.RemoveEmptyEntries)

    Call nyttspill()
End Sub
末级


这是迄今为止我们所拥有的代码。

借用该技术,在您的键控处理程序中,您需要:

确定案例陈述中按下的键/字母 更改相应按钮的FlatStyle属性

cmdAbutton.FlatStyle = FlatStyle.Flat
调用相应按钮的事件处理程序,或执行所需代码

cmdAbutton.PerformClick()
然后,创建一个与KeyDown非常相似的KeyUp处理程序

确定按下了哪个键/字母,以及 还原相应按钮的平面样式

cmdAbutton.FlatStyle = FlatStyle.Standard

我认为您可以像您的示例中那样继续,只是您需要将发送者和EventArgs作为参数传递。btn_click做什么?你是只关心按钮的功能,还是你真的想让按钮看起来像是在按下某个键时被视觉点击的?我想让它被视觉按下,然后在文本框中输入我按下的键。