есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.
Здравствуйте, sinister, Вы писали:
S>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз.
Насколько я помню, ShowDialog показывает модальное окно. Отсюда все проблемы))
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, sinister, Вы писали:
S>>есть такая проблема — в приложении из одного окна(parent) открывается другое(child), в child-e откывается третье(dialog) через ShowDialog(this) (типа this == child). При этом почемуто локается и parent. Хелп плз. C>Насколько я помню, ShowDialog показывает модальное окно. Отсюда все проблемы))
Собственно модальное окно и требуется, но только не для всего приложения, а для отдельного окна — если например в томже childe открыть OpenFileDialog или SaveFileDialog, то все работает нормально.. примерно такая функциональность и нужна
Здравствуйте, 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.
А еще лучше задуматься, нахрена такой извратный интерфейс.
Здравствуйте, 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 ?
Здравствуйте, 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 мне совсем слабо верится — никогда не встречался с таким поведением.
уже даже демо проект сделал для неверующих =). сюда можно какнить положить?
Re[4]: Multi window & ShowDialog()
От:
Аноним
Дата:
31.10.05 13:24
Оценка:
Гм... щас попробовал — в SDI все именно так как ты пишешь. Делай MDI. На мой вгзляд, SDI с кучей окон не лучшее решение, тем более что с ним возникли проблемы.
И еще вдогонку, не стоит называть такие формы child'ами, потому как это относится к MDI-интерфейсу. По сути это всего-лишь отдельная форма ибо, как я понимаю, никакой связи с породившей ее, она не имеет.
Здравствуйте, MxKazan, Вы писали:
MK>Гм... щас попробовал — в SDI все именно так как ты пишешь. Делай MDI. На мой вгзляд, SDI с кучей окон не лучшее решение, тем более что с ним возникли проблемы.
MK>И еще вдогонку, не стоит называть такие формы child'ами, потому как это относится к MDI-интерфейсу. По сути это всего-лишь отдельная форма ибо, как я понимаю, никакой связи с породившей ее, она не имеет.
MK>данное сообщение получено с www.gotdotnet.ru MK>ссылка на оригинальное сообщение
ну да, согласен, child тут не совсем к месту, но суть такая, что одна форма контролирует создание другой( =) ).
причем там еще одна проблема — при открытии чегонить модального(msgBox, OFD) на "условном parente" "псевдо child" локается...