Я использую 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
, но это расширяет мои знания, и я не уверен, как это сделать.