0

我对 Microsoft CAB 框架相当陌生,并且遇到了一个问题,即我无法在我的应用程序中“取消隐藏”功能区栏,因为它是在应用程序加载时设置的。之后我可以在 WorkItem 控制器中的事件中取消隐藏/显示它,如下所示:

' Show Ribbon
<EventSubscription(Constants.Events.HideRibbon, ThreadOption.UserInterface)> _
Public Sub hideRibbon(ByVal sender As Object, ByVal e As EventArgs)
    mShellUIExtensionService.ShowRibbon(True)
End Sub

我以为我可以从启动时加载的视图中发布上述事件,但是在应用程序启动后功能区栏仍然隐藏。

我公司的某个人正在使用以下 hack,它从“ShellCreated”事件将 F1 键发送到应用程序(我认为这是一个保留字事件,因为我可以在代码中的任何位置找到事件发布),但我发现它有时可以将 F1 键发送到错误的应用程序,如 Word、Outlook 等:

'This works, kind of...    
'===Maximize the RibbonBar automatically on Startup===
<EventSubscription("ShellCreated", ThreadOption.UserInterface)> _
Public Sub OnShellCreated(ByVal sender As Object, ByVal e As EventArgs)
    System.Windows.Forms.SendKeys.Send("^{F1}")


End Sub

我尝试将 mShellUIExtensionService.ShowRibbon(True) 添加到上述 OnShellCreated 函数中,但功能区栏仍然隐藏。

我怀疑问题出在加载 CAB 架构的顺序上,那么有谁知道在加载应用程序后如何设置 CAB 加载的属性?或者至少知道我该如何解决这个问题?

4

1 回答 1

0

通过反复试验,我发现以下工作:

<EventSubscription("ShellCreated", ThreadOption.UserInterface)> _ 
Public Sub OnShellCreated(ByVal sender As Object, ByVal e As EventArgs)
    mShellUIExtensionService.RibbonBar.IsMinimized() = False
End Sub
于 2015-01-14T04:11:43.640 回答