【问题标题】:keypress event instead click in vb.net按键事件而不是单击 vb.net
【发布时间】:2021-04-29 04:42:10
【问题描述】:

我正在尝试使用键而不是点击来实现一些事件,我知道这段代码:

Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
    My.Computer.Audio.Play("D:\VisualStudio\JuegoDIF\sonidos\sonidoPerro.wav") 
End Sub

当我单击picturebox2 时正在播放声音,但是如何使用键来执行此操作?例子: 按下“f5”键应该播放与点击事件相同的声音

到目前为止,我尝试过这样的 keyDown:

   Private Sub PictureBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles PictureBox2.KeyDown
    If e.KeyCode.Equals(Keys.F5) Then
        My.Computer.Audio.Play("D:\VisualStudio\JuegoDIF\sonidos\sonidoPerro.wav") ' 
    End If
End Sub

但它不起作用,按键我不确定如何实现它:

Private Sub PictureBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles 
PictureBox2.KeyPress

End Sub

我怎样才能实现这个?

【问题讨论】:

  • 你不能。键盘事件仅对可以接收焦点的控件有意义。如果控件无法获得焦点,例如PictureBox,那么处理在该控件具有焦点时发生的键盘输入有什么意义?它没有。
  • 在阅读后我能够找到解决方案,感谢@jmcilhinney的回复

标签: vb.net winforms events


【解决方案1】:

将表单属性设置为 Key Preview 为 True

Form KeyDown 事件下

 Private Sub frm_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) 
Handles MyBase.KeyDown
    

    If e.KeyCode = Keys.F1 Then
        'Enter your Code here
    End If


    If e.KeyCode = Keys.F2 Then
         'Enter Code here
    End If
End Sub

这个方法应该是最简单的一个

【讨论】:

  • 这很好,就目前而言,但是您需要考虑到其他控件可能具有焦点的事实,并且还有一些方法可以区分您希望您的操作应用于哪个不可选择的控件.例如,一旦 ButtonTextBox 获得焦点,您可以“取消焦点”控件,除非在代码中将 ActiveControl 设置为 Nothing,那么您如何确定您正在执行与 @ 相关的操作987654328@?
  • 如果我得到了正确的 ImJP,他想使用 F5 键触发一个事件,所以我想他可以在 sub 中预定义事件并使用这种方法触发它。最好的解决方案真的取决于他真正想要什么。我们都不知道表格中有多少张图片,或者他可能会为不同的图片使用不同的图片来触发不同图片的事件。这可能不是完美的答案,但这是@ImJP 可以探索的。
  • @YatFeiLeong 是的,实际上我会尝试一下,看看行为,非常感谢,这是解决问题的一个很好的起点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2018-09-15
  • 1970-01-01
  • 2013-10-06
  • 2020-10-25
相关资源
最近更新 更多