我已经在visual basic中创建了一款游戏,并决定通过在游戏中添加多个房间进行扩展。每个房间都是一个面板,显示用户何时进入某个区域。首先,我创建了一个继承面板属性的类,然后将其添加到我的主窗体中。然后我将所有项目添加到面板控件中。我的问题是,当它在面板控件中时,我无法控制播放器。我尝试了各种各样的方法,但无法让它发挥作用。
我做了一些阅读,发现该面板没有keyUp()和keyDown()事件。但是,我想知道是否有办法解决这个问题。
提前致谢!
mainRoom()类的代码(我的面板):
Public Class mainRoom
Inherits Panel
Sub New()
With Me
.SetBounds(0, 0, Form1.Width, Form1.Height)
.SendToBack()
End With
End Sub
Public Sub mainRoom_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Me.Paint
e.Graphics.FillRectangle(Brushes.DarkOrange, block)
End Sub
End Class
在主要表格类中:
Sub setMap()
main = New mainRoom()
Me.Controls.Add(main)
End Sub
答案 0 :(得分:2)
您可以在主窗体上设置KeyPreview=True
,然后从表单处理键上/下事件:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
'key down code.
e.Handled = True
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
'key up code.
e.Handled = True
End Sub
注意:如果您不想要其他控件'在表单事件处理程序执行后触发的键上/下事件处理程序,然后像上面的示例中那样设置e.Handled=True
。
有关KeyPreview的更多信息,请参阅MSDN。
答案 1 :(得分:0)
注意 - 当通过IDE将现有控件从表单移动(剪切/粘贴)到新的面板控件时,事件处理程序不会成为父控件(新面板)的子项。所以这发生了:
Private Sub Button1_Click(sender As Object, e As EventArgs)
添加事件处理程序,不要花时间谷歌搜索为什么按键事件突然停止在面板中停止...
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click