Проблема загрузки блока составного приложения Microsoft (CAB)
Я довольно плохо знаком с платформой 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
Я думал, что мог бы опубликовать вышеупомянутое событие из представления, которое загружается при запуске, но, увы, панель ленты по-прежнему скрыта после запуска приложения.
Кто-то в моей компании использует следующий хак, который отправляет ключ F1 в приложение из события "ShellCreated" (которое, я считаю, является зарезервированным словом, поскольку я могу найти публикацию события в любом месте кода), но я считаю, что это иногда может отправить клавишу 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 после загрузки приложения? Или, по крайней мере, знаете, как я могу обойти эту проблему?
1 ответ
Методом проб и ошибок я нашел следующее:
<EventSubscription("ShellCreated", ThreadOption.UserInterface)> _
Public Sub OnShellCreated(ByVal sender As Object, ByVal e As EventArgs)
mShellUIExtensionService.RibbonBar.IsMinimized() = False
End Sub