我正在研究visual basic中的一个小故事类型的东西。没有什么太复杂但我遇到了问题。我正在尝试制作暂停功能。我把它全部工作当我按下逃生时,表格进入菜单类型的东西。唯一的问题是它只能工作一次。第一次印刷工作,但如果我继续,它继续从我离开的地方。但是,如果我再次按它,没有任何反应。这是我正在使用的代码:
Private Sub Story_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Text.Hide()
Background.Hide
ContinueButton.Show
OptionsButton.Show
End If
End Sub
我有什么办法让这项工作不止一次吗?我在私有子中使用KeyDown事件。
希望这是有道理的,但感谢任何帮助人员!
答案 0 :(得分:0)
您正在使用Form.KeyPreview = true来捕获表单击键。我认为Text.Hide()
或Show
操作之一可能是问题,例如使TabStop无序或在标签序列中留下间隙。
尝试重置控件或使用SendKeys重置选项卡序列索引(使控件具有焦点),例如,Tab forward和Alt Tab back:
SendKeys.Send("{TAB}");
或
SendKeys.Send("%{TAB}");
价: http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx
答案 1 :(得分:0)
使用类级别布尔值作为切换应该起作用:
Dim Hide As Boolean = False
Private Sub Story_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Hide = Not Hide
If Hide Then
Text.Hide()
Background.Hide
ContinueButton.Show
OptionsButton.Show
Else
Text.Show()
Background.Show
ContinueButton.Hide
OptionsButton.Hide
End If
End Sub
答案 2 :(得分:0)
如果没有其他帮助,您可以随时拥有一个私有的类级变量,如_processingKeyDown
,在处理程序启动时设置为True
,完成后设置为False
。处理程序中的第一行是:
If _processingKeyDown Then Return