|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Запустившее приложение в качестве родителя на C# |
|
.NET - [решено] Запустившее приложение в качестве родителя на C#
|
Пользователь Сообщения: 124 |
Профиль | Отправить PM | Цитировать Есть программа CorelDRAW и в неё интегрирован VSTA.
Пишу Addin на C# в этом VSTA, из кода в приложении создаю кнопку, которая запускает мою форму: Form1 frm = new Form1(this.app); frm.Show(); Но форма создаётся как независимое окно. К примеру сворачивание разворачивание CorelDRAW на мою форму никак не влияет. Если использовать ShowDialog(), тогда всё вроде бы ок, форма становится зависимой от окна CorelDRAW, но она блокирует его. Т.е. в приложении невозможно что либо делать пока открыта моя форма. Вопрос: Как так хитро запустить форму что бы она зависела от окна приложения и не блокировала его? Есть идеи? |
|
Отправлено: 01:43, 17-10-2011 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Sanchos, тебе надо вызывать форму как обычную форму, т.к. ты и так указываешь при вызове, что Corel является родителем твоей формы. Далее тебе надо привязаться к событию главного приложения - State Changed. И проверять примерно так:
|
------- Отправлено: 12:50, 17-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 124
|
Профиль | Отправить 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 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:15, 17-10-2011 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Ну вот видишь, главное было подтолкнуть в нужную сторону
|
|
------- Отправлено: 01:08, 18-10-2011 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Телефон в качестве модема | 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 |
|