Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
Привет всем!!! Может кто знает, столкнулся с проблемой. Пишу приложение MDI, вызываю из формы другую форму, причем она должнабыть как диалог: form.ShowDialog(); чтобы пользователь не смог внести изменения в исходную форму ... ну это все понятно. Но при этом появляется ошибка типа в MDI форме такого делать нельзя. Может кто сталкивался и есть какое то решение данной проблемы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 18:01 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой. Код: plaintext Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 10:06 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
kerales DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой. Код: plaintext Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме. А как ты пытаешься открыть диалог? Приведи фрагмент кода; без этого сложно понять, что может быть не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 11:42 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
gerss kerales DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой. Код: plaintext Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме. А как ты пытаешься открыть диалог? Приведи фрагмент кода; без этого сложно понять, что может быть не так. Еще раз обьясню, проблема на самом деле не очень простая. Создаю MDI форму, из нее вызываю Child форму: frmAddStructure addStructure = new frmAddStructure(); addStructure.MdiParent = this; addStructure.Show(); Это например форма в которой ползователь видет некую структуру. Теперь возникает проблема. Необходимо эту структуру редактировать. Пользователь на этой форме должен нажать кнопку редактировать и должно появиться второе окно, поверх первого в котором пользователю будет предложено ввести какие то данные, причем понятно, что это окно должно быть модальным по отношению к первому, но как я уже говорил вызвать вторую форму с помощю ShowDialog() нельзя, возникает ошибка, типа в MDI приложение нельзя использовать модальные окна, ну это и понятно. Я вот и хочу узнать какие есть методы обойти эту штуку??? Мне это очень нужно и отказаться от структуры приложения MDI я не могу. Может можно придумать какую нить хитрость??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 12:00 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
kerales gerss kerales DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой. Код: plaintext Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме. А как ты пытаешься открыть диалог? Приведи фрагмент кода; без этого сложно понять, что может быть не так. Еще раз обьясню, проблема на самом деле не очень простая. Создаю MDI форму, из нее вызываю Child форму: frmAddStructure addStructure = new frmAddStructure(); addStructure.MdiParent = this; addStructure.Show(); Это например форма в которой ползователь видет некую структуру. Теперь возникает проблема. Необходимо эту структуру редактировать. Пользователь на этой форме должен нажать кнопку редактировать и должно появиться второе окно, поверх первого в котором пользователю будет предложено ввести какие то данные, причем понятно, что это окно должно быть модальным по отношению к первому, но как я уже говорил вызвать вторую форму с помощю ShowDialog() нельзя, возникает ошибка, типа в MDI приложение нельзя использовать модальные окна, ну это и понятно. Я вот и хочу узнать какие есть методы обойти эту штуку??? Мне это очень нужно и отказаться от структуры приложения MDI я не могу. Может можно придумать какую нить хитрость??? Ну и какие сложности? В коде события нажатия кнопки пишешь: Код: plaintext 1. 2. и получаешь модальное окошко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 12:46 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
keralesПользователь на этой форме должен нажать кнопку редактировать и должно появиться второе окно, поверх первого в котором пользователю будет предложено ввести какие то данные, причем понятно, что это окно должно быть модальным по отношению к первому, но как я уже говорил вызвать вторую форму с помощю ShowDialog() нельзя, возникает ошибка, типа в MDI приложение нельзя использовать модальные окна, ну это и понятно. Я вот и хочу узнать какие есть методы обойти эту штуку??? Мне это очень нужно и отказаться от структуры приложения MDI я не могу. Может можно придумать какую нить хитрость??? Я до сих пор не решил эту проблему. Как я ни пробовал, но стандартная модальная форма не может содержать свойство addStructure.MdiParent = this; Пытался решить эту проблему через потоки в которых будет происходить ожидание. Но модальная форма не может быть создана в другом потоке :( Какие еще есть варианты? Поделитесь кто знает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 05:35 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
Не путаете ли Вы понятие модальность с каким-нибудь другим. Ведь по определению модальное окно блокирует доступ ко всему приложению пока не получит реакции от пользователя. кто-то спорил на этот счет]http://www.sql.ru/forum/actualpost.aspx?bid=20&tid=142651&mid=0&p=1#1154298 Если я правильно понял Вам нужна форма, со следующим свойством: блокировать доступ к первому окну пока открыто второе. Вижу несколько путей. Один такой. Создать собственную форму наследованную от Forms (или создать соответствующий интерфейс). Добавить свойства, типа, "родительская форма" и/или "дочерняя форма". В главной форма в событии MdiChildActivate анализировать описанные свойства и активизировать нужную форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 08:13 |
|
||
|
ShowDialog() в MDI форме
|
|||
|---|---|---|---|
|
#18+
А зачем вам addStructure.MdiParent = this; ??? Благодаря этой строке, форма ввода становится модальной и ее действительно нельзя уже открыть через ShowDialog(). Без указания MdiParent модальная форма замечательно открывается. Или вам нужно, чтобы эта форма была модальной только для "своей" mdi-формы, не блокируя работу с остальными mdi-формами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 10:26 |
|
||
|
|

start [/forum/topic.php?fid=20&tid=1437186]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 334ms |

| 0 / 0 |
