OpenModalWindow在屏幕第一次调用它时抛出错误

时间:2013-08-29 16:23:59

标签: visual-studio-2012 visual-studio-lightswitch

我一直在建立一个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键时发生。每个有帮助窗口的屏幕上的行为都是相同的。

我对谷歌这个问题的尝试毫无结果。有没有人见过这种行为?

1 个答案:

答案 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

我希望这有助于,或者至少指出你的解决方案。