Параметры приложения Visual Studio PropertyBindings работает с элементами управления Windows Forms, но не с элементами управления ленты VSTO ..? - PullRequest
0 голосов
/ 04 февраля 2020

Я использую VB. Net для создания надстройки приложения Excel. Среда - Office 2007 и Visual Studio 2008.

Я обнаружил, что PropertyBinding между My.Settings и свойством VSTO RibbonCheckBox.Checked не работает, но оно работает для Windows.Forms.CheckBox. Я проверил и подтвердил это с обоими типами флажков.

Я подумал, что, возможно, проблема в том, что это надстройка, как упомянуто в документации :

Нельзя использовать параметры приложения в неуправляемом приложении, в котором размещена. NET Framework. Настройки не будут работать в таких средах, как надстройки Visual Studio, C ++ для Microsoft Office, управление хостингом в Inte rnet Explorer или надстройки и проекты Microsoft Outlook.

Но я разработал следующий обходной путь для RibbonCheckBox, а затем, похоже, сработало. Настройка была сохранена и повторно загружена даже после выхода и повторного запуска Excel:

Private Sub chkEnabled_Click( _
                    ByVal sender As System.Object, _
                    ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs _
                    ) Handles chkEnabled.Click
    Dim ctl As Ribbon.RibbonCheckBox = DirectCast(sender, Ribbon.RibbonCheckBox)
    My.Settings.OpenLastFileEnabled = ctl.Checked
End Sub

Но ... есть ли лучший способ ..? Тот, который является глобальным и будет влиять на все RibbonControl объекты без добавления кода к их событиям ..?

Я нашел упоминание об интерфейсе INotifyPropertyChanged, но обсуждения, казалось, не соответствовали моей ситуации. И каждый пример, который я нашел, был для C#, и я не мог точно определить, как адаптировать любой из примеров к VB.

Возможно, мне нужно реализовать или переопределить что-то в RibbonControl , но это расширяет мои знания, и я не уверен, как это сделать.

...