Visual studio 2012 OpenModalWindow在屏幕第一次调用时抛出错误
我一直在构建一个IT票务/库存系统,程序已经完成,现在我正在为最终用户和我们学校的其他技术人员添加说明。因为我知道没有人会阅读说明书,所以我选择为每个屏幕制作说明,并将其放入模式窗口中,通过按下添加到屏幕命令部分的帮助按钮激活 这非常有效,因此我决定捕获KeyDown事件,并在按下F1时启动窗口。这就是事情变得有点奇怪的地方。 如果此特定屏幕的帮助窗口已至少打开一次,则按F1键将再次打开,不会出现任何问题。如果从未打开过,按F1键会导致错误“Control”HelpWindow不包含模式窗口。无法使用OpenModalWindow/CloseModalWindow。” 关闭此错误消息后,F1将完全按照预期启动帮助窗口。很奇怪 背景资料: Visual Studio 2012 VB中的Lightswitch项目(我同时在VB和C中工作,为此项目掷硬币) 模式窗口是屏幕上不可见的组,名为“帮助窗口”;我使用Visual studio 2012 OpenModalWindow在屏幕第一次调用时抛出错误,visual-studio-2012,visual-studio-lightswitch,Visual Studio 2012,Visual Studio Lightswitch,我一直在构建一个IT票务/库存系统,程序已经完成,现在我正在为最终用户和我们学校的其他技术人员添加说明。因为我知道没有人会阅读说明书,所以我选择为每个屏幕制作说明,并将其放入模式窗口中,通过按下添加到屏幕命令部分的帮助按钮激活 这非常有效,因此我决定捕获KeyDown事件,并在按下F1时启动窗口。这就是事情变得有点奇怪的地方。 如果此特定屏幕的帮助窗口已至少打开一次,则按F1键将再次打开,不会出现任何问题。如果从未打开过,按F1键会导致错误“Control”HelpWindow不包含模式窗口。无
OpenModalWindow(“帮助窗口”)
打开它。HelpButton_执行代码中的代码行与KeyDown事件的事件处理程序中的代码行完全相同。
这与我在程序中的其他模式窗口中使用的方法相同,用于提交新票据、向库存添加设备等。
此问题仅在事件处理程序中发生,并且仅在第一次按下F1键时发生。在每个有帮助窗口的屏幕上,行为都是相同的
我用谷歌搜索这个问题的尝试没有结果。以前有人见过这种行为吗?听起来确实很奇怪。我必须承认,我自己在模态窗口中没有看到过类似的情况 你没有提到你在哪里捕获了KeyDown键,所以很难对此发表评论 我有时看到的是,特别是在做一些有点“不同”的事情时,错误消息没有告诉您问题的实际原因 我将尝试使用dispatcher调用包装代码,以确保调用在正确的线程上执行,并尝试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
我希望这能帮助您,或者至少为您指明解决方案的方向。您对错误的看法是正确的,这些错误通常不准确。:)在screen的created方法中,我使用AddHandler(“ScreenName”)。ControlAvailable,ScreenAvailable的地址偶然过早地按了enter键。在screen available方法中,我执行另一个AddHandler,这次是查找KeyDown事件。下周我回去工作时,我会去找调度员。谢谢