Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Запустившее приложение в качестве родителя на C#

Ответить
Настройки темы
.NET - [решено] Запустившее приложение в качестве родителя на C#

Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Есть программа CorelDRAW и в неё интегрирован VSTA.
Пишу Addin на C# в этом VSTA, из кода в приложении создаю кнопку, которая запускает мою форму:

Form1 frm = new Form1(this.app);
frm.Show();


Но форма создаётся как независимое окно. К примеру сворачивание разворачивание CorelDRAW на мою форму никак не влияет.
Если использовать ShowDialog(), тогда всё вроде бы ок, форма становится зависимой от окна CorelDRAW, но она блокирует его.
Т.е. в приложении невозможно что либо делать пока открыта моя форма.

Вопрос:
Как так хитро запустить форму что бы она зависела от окна приложения и не блокировала его? Есть идеи?

Отправлено: 01:43, 17-10-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Sanchos, тебе надо вызывать форму как обычную форму, т.к. ты и так указываешь при вызове, что Corel является родителем твоей формы. Далее тебе надо привязаться к событию главного приложения - State Changed. И проверять примерно так:
Код: Выделить весь код
if(this.WindowsState == WindowState.Minimized)
frm.WindowState = WindowState.Minimized;

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 12:50, 17-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Delirium, если ты про Form1(this.app) тогда это просто передача переменной app в форму, т.к. она объявляется в Main.cs внутри #region VSTA generated code след. видом app = (Application)this.Host;.

По поводу отслеживать состояние окна CorelDRAW идея вроде хорошая, у него в объектной модели даже есть AppWindow.WindowState, вот только события нету на которое можно было бы эту проверку повешать. Да и проблема останется в том, что если я с формы переключусь на CorelDRAW, форма окажется под окном приложения. Можно конечно и TopMost менять, но это уже каким то гемороем попахивает (((

Должно же быть какое то элементарное и изящное решение.

Отправлено: 13:47, 17-10-2011 | #3


Аватара для Sanchos

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


придумал таки:

Код: Выделить весь код
frm.Show(System.Windows.Forms.Control.FromHandle((IntPtr)app.AppWindow.Handle));

Отправлено: 14:15, 17-10-2011 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Ну вот видишь, главное было подтолкнуть в нужную сторону

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:08, 18-10-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Запустившее приложение в качестве родителя на C#

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Телефон в качестве модема Vlad215 Мобильные ОС, смартфоны и планшеты 3 15-05-2011 09:55
VBA - Как узнать имя процесса-родителя akkorn Программирование и базы данных 4 16-03-2009 11:33
Доступ - Vista в качестве сервера dbtest Microsoft Windows Vista 25 09-04-2008 15:23
Доступ к методам и свойствам родителя XCodeR Вебмастеру 13 05-11-2005 13:40
Проблема с Х в качестве shell noemotion Общий по FreeBSD 9 27-04-2005 13:07




 
Переход