我一直在建立一个IT票务/库存系统,程序已经完成,现在我正在为我们学校的最终用户和其他技术人员添加说明。由于我知道没有人会阅读说明书,我选择为每个屏幕制作说明,并将它们放入模态Windows中,通过按下我添加到“屏幕命令”部分的“帮助”按钮激活。
这非常有效,所以我决定捕获KeyDown事件,并在按下F1时启动窗口。这是事情变得有点奇怪的地方。 如果此特定屏幕的HelpWindow至少已打开一次,按F1将再次打开它,没有任何问题。如果它从未打开过,按F1键会导致错误'控制'HelpWindow'不包含模态窗口。无法使用OpenModalWindow / CloseModalWindow。 关闭此错误消息后,F1将完全按预期启动HelpWindow。非常离奇......
背景资料:
Visual Studio 2012
VB中的Lightswitch项目(我在VB和C#中工作,为这个项目翻了一个硬币)
模态窗口是屏幕上不可见的组,名为“HelpWindow”;我用OpenModalWindow("HelpWindow")
打开它。 HelpButton_Execute代码中完全相同的代码行,以及KeyDown事件的事件处理程序。
这与我在程序中的每个其他模态窗口使用的方法相同,用于提交新票证,向库存添加设备等。
此问题仅发生在事件处理程序中,并且仅在第一次按下F1键时发生。每个有帮助窗口的屏幕上的行为都是相同的。
我对谷歌这个问题的尝试毫无结果。有没有人见过这种行为?
答案 0 :(得分:1)
这听起来很奇怪。我不得不承认,我自己没有看过这样的模态窗口。
你没有提到哪里你正在捕获 KeyDown 键,所以对它进行评论有点难。
我有时会看到,特别是在做一些“不同”的事情时,错误信息并没有告诉您实际问题的原因。
我会尝试使用调度程序调用来包装代码,以确保在正确的线程上执行调用,以及try / catch以查看是否可以找到错误的真正原因:
Private Sub YourClickHandler
Try
Me.Details.Dispatcher.BeginInvoke(
Sub()
OpenModalWindow("HelpWindow")
End Sub)
Catch ex As Exception
Me.ShowMessageBox(ex.Message)
End Try
End Sub
我希望这有助于,或者至少指出你的解决方案。