Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 09:22
Оценка:
есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.
Re: Multi window & ShowDialog()
От: Codechanger Россия  
Дата: 31.10.05 10:06
Оценка:
Здравствуйте, sinister, Вы писали:

S>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.

Насколько я помню, ShowDialog показывает модальное окно. Отсюда все проблемы))
Re[2]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 10:14
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Здравствуйте, sinister, Вы писали:


S>>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.

C>Насколько я помню, ShowDialog показывает модальное окно. Отсюда все проблемы))

Собственно модальное окно и требуется, но только не для всего приложения, а для отдельного окна — если например в томже childe открыть OpenFileDialog или SaveFileDialog, то все работает нормально.. примерно такая функциональность и нужна
Re: Multi window & ShowDialog()
От: Codechanger Россия  
Дата: 31.10.05 10:32
Оценка:
Здравствуйте, sinister, Вы писали:

S>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.

Модальное окно потому и модальное, что фокус с него другому окну нельзя передать. OpenFileDialog таким окном и является по умолчанию, насколько я помню.
Re[2]: Multi window & ShowDialog()
От: Аноним  
Дата: 31.10.05 10:33
Оценка:
Это как это? Модальный режим он на то и модальный — все приложение ждет пока пользователь что-то выберет/укажет/посмотрит.

А если уж так нужен подобный изврат, то можно первому child свойство enabled выставить в false, до тех пор, пока второй child не закроется (и в своем Close вернет enabled первого child-а в true). При этом также необходимо заботиться, чтобы второй child всегда был "выше" первого в Z-order.

А еще лучше задуматься, нахрена такой извратный интерфейс.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 11:32
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Здравствуйте, sinister, Вы писали:


S>>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.

C>Модальное окно потому и модальное, что фокус с него другому окну нельзя передать. OpenFileDialog таким окном и является по умолчанию, насколько я помню.

Кто-то когото не понимает — есть взять в parente создать child, в childe вызвать OpenFileDialog, то OFD будет модален (ну или называйте как хотите) только для childa — тоесть нельзя будет активировать childa пока OFD не закроется и в тоже время parent полность дееспособен. OFD вызывается приметно так
DialogResult res = this.openFileDialog.ShowDialog(this);
if(res != DialogResult.OK)
{
    return;
}


Вопрос — почему в этом случае ShowDialog является модальным только для childa ?
Re[3]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 11:36
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Это как это? Модальный режим он на то и модальный — все приложение ждет пока пользователь что-то выберет/укажет/посмотрит.


MK>А если уж так нужен подобный изврат, то можно первому child свойство enabled выставить в false, до тех пор, пока второй child не закроется (и в своем Close вернет enabled первого child-а в true). При этом также необходимо заботиться, чтобы второй child всегда был "выше" первого в Z-order.

Ну одно решение есть, оно работает, только мне хочется, чтобы форма работала как OpenFileDialog — вызвал ShowDialog и никаких проблем

MK>А еще лучше задуматься, нахрена такой извратный интерфейс.

Некоторые задачи тяжело запихать в рамки одного окошка и многооконность существенно повышает юзабилити.
Re[3]: Multi window & ShowDialog()
От: Аноним  
Дата: 31.10.05 12:22
Оценка:
Хе, я вполне оправдываю многооконность. Но вот чтоб для одного модально, а для другого нет — это изврат. Запутаешь только пользователя!

Вот еще что, это у тебя MDI или как? Про OpenFileDialog мне совсем слабо верится — никогда не встречался с таким поведением.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 12:44
Оценка:
еще один пример — вызываем MessageBox.Show(bla bla bla) — child отдыхает, а парент работает...
Re[5]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 13:22
Оценка:
уже даже демо проект сделал для неверующих =). сюда можно какнить положить?
Re[4]: Multi window & ShowDialog()
От: Аноним  
Дата: 31.10.05 13:24
Оценка:
Гм... щас попробовал — в SDI все именно так как ты пишешь. Делай MDI. На мой вгзляд, SDI с кучей окон не лучшее решение, тем более что с ним возникли проблемы.

И еще вдогонку, не стоит называть такие формы child'ами, потому как это относится к MDI-интерфейсу. По сути это всего-лишь отдельная форма ибо, как я понимаю, никакой связи с породившей ее, она не имеет.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[5]: Multi window & ShowDialog()
От: sinister  
Дата: 31.10.05 13:33
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Гм... щас попробовал — в SDI все именно так как ты пишешь. Делай MDI. На мой вгзляд, SDI с кучей окон не лучшее решение, тем более что с ним возникли проблемы.


MK>И еще вдогонку, не стоит называть такие формы child'ами, потому как это относится к MDI-интерфейсу. По сути это всего-лишь отдельная форма ибо, как я понимаю, никакой связи с породившей ее, она не имеет.


MK>
данное сообщение получено с www.gotdotnet.ru

MK>ссылка на оригинальное сообщение


ну да, согласен, child тут не совсем к месту, но суть такая, что одна форма контролирует создание другой( =) ).
причем там еще одна проблема — при открытии чегонить модального(msgBox, OFD) на "условном parente" "псевдо child" локается...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.