/// <summary> /// Открывает окно "Объекты" /// </summary> /// <param name="sender">Отправитель</param> /// <param name="e">Аргументы события</param> public static void ShowWellKnownDockWindow(object sender, EventArgs e) { try { // Получаем ссылку на службу именованных окон "Навигатора" IWellKnownNavigators wkn = ServicesManager.GetService(typeof(IWellKnownNavigators)) as IWellKnownNavigators; // Сначала ищем открытое окно "Объекты" WellKnownDockWindow sampleWindow = wkn.Get(WellKnownDockWindow.WindowName) as WellKnownDockWindow; // Окно не найдено - создаём новое окно if (sampleWindow == null) { // Новое окно sampleWindow = new WellKnownDockWindow(); // Регистрируем окно в списке именованных окон "Навигатора" wkn.Register(WellKnownDockWindow.WindowName, sampleWindow); } // Добавляем его в текущий докинг "Навигатора" sampleWindow.Show(ServicesManager.GetService(typeof(DockManager)) as DockManager); // Покажем окно на экране и сделаем его активным окном в докинге sampleWindow.Activate(); } catch (Exception x) { MessageBox.Show(x.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
/// <summary> /// Требуется восстановление окна /// </summary> /// <param name="guid">Guid окна</param> /// <param name="persistString">Строка с сохранённым состоянием окна</param> /// <returns>Элемент управления с окном</returns> public static DockControl RestoreWindowCallback(Guid guid, string persistString) { // Проверочка if (guid != _persistStateGuid) { return(null); } try { // Создаём новый документ XmlDocument xmlDoc = new XmlDocument(); // Загружаем в него строку xmlDoc.LoadXml(persistString); // Создаём новое окно WellKnownDockWindow sampleWindow = new WellKnownDockWindow(); try { // Восстанавливаем ему состояние из XML sampleWindow.RestoreState(xmlDoc); // Возвращаем окно return(sampleWindow); } catch { throw; } } catch (Exception e) { throw new InvalidOperationException("Невозможно восстановить состояние окна!", e); } }