Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Из модального окна сделать немодальное, Как создать немодальное окно в потоке 
:(
    Опции темы
erm0l0v
Дата 26.1.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



У меня есть dll написанная на С#.

В ней создаётся поток, и уже в этом потоке мне необходимо создать окно.

Создаю так:
Код

MainWindow main = new MainWindow();
main.ShowDialog();


но ShowDialog создает модальное окно, а мне нужно немодальное

если создаю так:
Код

MainWindow main = new MainWindow();
main.Show();


То поток создающий окно завершается, и око тут же закрывается.

Как мне из модального окна сделать немодальное, или как сделать так чтобы после Show() поток ожидал закрытия окна.
PM MAIL   Вверх
jonie
Дата 26.1.2011, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(erm0l0v @  26.1.2011,  17:20 Найти цитируемый пост)

но ShowDialog создает модальное окно, а мне нужно немодальное

модальное окно - это то что блокирует доступ к другим. Если вы вызываете ShowDialog из другого потока, то получаете немодальное окно по отношению к другим потокам.
Ну если хочется то можно сделать так:
Код

Thread th = new Thread(param =>
{
  var frm = new Form1();
  frm.Show();
  Application.Run();
 });

th.SetApartmentState(ApartmentState.STA);
th.Start();

но это наверно тоже самое получится визуально что и ShowDialog

UDP: единственное зачем это может понадобится это отображение сплешскрина пока что-то делается.. но так у вас ничего не получится.

Это сообщение отредактировал(а) jonie - 26.1.2011, 20:29


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
erm0l0v
Дата 27.1.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



Да действительно окно создается немодальное.

Получается мне для нормальной работы нудно создать модальное окно)))

Как я понял для этого нужно установить свойство Owner, но о родительском окне я знаю только его handle
PM MAIL   Вверх
jonie
Дата 27.1.2011, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



erm0l0v, нельзя так делать. У вас два окна будут в разных потоках, а значит в разных апартаментах. Уверен что возникнут проблемы. Создавайте модальной окно в основном потоке (где создаете "родителя")...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
erm0l0v
Дата 31.1.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



Спасибо за помощь, но к сожалению в моей задаче это не возможно основное окно у меня создается в потоке MTA, а второе окно использует WPF который требует STA. Я не нашел другого для создания этого окна кроме как создания нового STA потока...
PM MAIL   Вверх
jonie
Дата 31.1.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата

но к сожалению в моей задаче это не возможно основное окно у меня создается в потоке MTA
ну кхе-кхе.. "удачи"... удачи в работе с буфером обмена например.... в общем я крайне не рекомендую так делать.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.4215 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.