我对 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 加载的属性?或者至少知道我该如何解决这个问题?