0

我一直在构建一个 IT 票务/库存系统,程序已经完成,现在我正在为最终用户和我们学校的其他技术人员添加说明。因为我知道没有人会阅读说明手册,所以我选择为每个屏幕制作说明,并将它们放在模态窗口中,通过按下我添加到屏幕命令部分的帮助按钮来激活。

效果很好,所以我决定捕获 KeyDown 事件,并在他们按下 F1 时启动窗口。这就是事情变得有点奇怪的地方。如果此特定屏幕的帮助窗口至少打开过一次,按 F1 可以再次打开它,没有任何问题。如果它从未打开过,按 F1 会导致错误“控制”帮助窗口不包含模式窗口。不能使用 OpenModalWindow/CloseModalWindow。关闭此错误消息后,F1 将完全按预期启动 HelpWindow。很诡异...

背景信息:VB 中的Visual Studio 2012 Lightswitch 项目(我在VB 和C# 中工作,为这个项目抛了硬币) 模态窗口是屏幕上不可见的一个组,名为“HelpWindow”;我OpenModalWindow("HelpWindow")用来打开它。HelpButton_Execute 代码中完全相同的代码行,以及 KeyDown 事件的事件处理程序。这与我对程序中的每个其他模式窗口使用的方法相同,用于提交新票、将设备添加到库存等。此问题仅发生在事件处理程序中,并且仅在第一次按下 F1 键时发生。每个具有帮助窗口的屏幕上的行为都是相同的。

我试图用谷歌搜索这个问题没有结果。有没有人见过这种行为?

4

1 回答 1

1

这听起来很奇怪。我不得不承认,我自己没有在模态窗口中看到过这样的东西。

你没有提到你在哪里捕获KeyDown键,所以很难对此发表评论。

我有时看到的,尤其是在做一些“不同”的事情时,错误消息没有告诉你问题的实际原因。

我会尝试使用调度程序调用来包装代码,以确保在正确的线程上执行调用,以及尝试/捕获以查看是否可以找到错误的真正原因:

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

我希望这会有所帮助,或者至少为您指明解决方案的方向。

于 2013-08-30T02:25:42.770 回答