Как использовать диалог в общем плагине Excel - PullRequest
2 голосов
/ 15 мая 2010

Я пишу общий плагин для Excel. Он добавляет CommandBarButton, который при нажатии открывает окно WPF для сбора некоторой информации от пользователя.

Я хотел сохранить тот же диалог WPF в памяти и повторно использовать его, чтобы, если пользователь снова щелкнет CommandBarButton, его прежние значения все еще были там.

Поэтому я сделал ссылку на мой диалог WPF как на личный член моего объекта надстройки, который реализует Extensibility.IDTExtensibility2.

Я создал окно во время OnStartupComplete (), но по какой-то причине, когда я запускаю Excel, окно открывается сразу, хотя я никогда не вызывал ShowDialog () и когда я вызываю ShowDialog (), когда CommandBarButton щелкают, чтобы открыть это окно. не удается загрузить.

Кто-нибудь знает, почему это происходит и как это правильно сделать?

Большое спасибо за любую помощь.

ОБНОВЛЕНИЕ КОДА:

public void OnStartupComplete(ref System.Array custom) 
{ 
   MyDialog dlg = new MyDlg(); //This will open the dialog ?!?!
}

....

 public MyDialog()
 {
      InitializeComponent();
      Loaded += new RoutedEventHandler(OnLoaded);
 }

OnLoaded просто подключает некоторые обработчики событий для кнопок и устанавливает некоторые ItemSources. Даже если я закомментирую это, оно все равно откроет окно.

Я понял, что после закрытия окна WPF его нельзя открыть, и это сделано специально. Но почему он открывается автоматически при создании внутри надстройки Excel, остается загадкой.

1 Ответ

3 голосов
/ 20 мая 2010

Я смог воспроизвести вашу проблему. В конструкторе WPF убедитесь, что свойство Visbility формы имеет значение Свернуто . Если у вас есть Visible , , оно будет автоматически отображаться при создании диалога .

...