powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ShowDialog() в MDI форме
9 сообщений из 9, страница 1 из 1
ShowDialog() в MDI форме
    #32765457
kerales
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!!!
Может кто знает, столкнулся с проблемой.
Пишу приложение MDI, вызываю из формы другую форму, причем она должнабыть как диалог:

form.ShowDialog(); чтобы пользователь не смог внести изменения в исходную форму ... ну это все понятно. Но при этом появляется ошибка типа в MDI форме такого делать нельзя. Может кто сталкивался и есть какое то решение данной проблемы???
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32765495
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32766016
kerales
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой.

Код: plaintext


Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме.
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32766304
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kerales DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой.

Код: plaintext


Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме.

А как ты пытаешься открыть диалог? Приведи фрагмент кода; без этого сложно понять, что может быть не так.
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32766360
kerales
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gerss kerales DankovMDI-форма и диалог - взаимоисключающие состояния форм. Либо то, либо другое. Если нужен диалог, совсем не нужно ему быть для этого MDI-формой.

Код: plaintext


Да конечно, это все понятно, Но когда в MDI форме возникает необходимость ввести какое то значение, приэтом чтобы пользователь не мог в исходной форме сделать никаких мзменений ... обычно в простом win приложение для этих целей и применяют ShowDialog() ... но я не могу этого сделать в MDI форме.

А как ты пытаешься открыть диалог? Приведи фрагмент кода; без этого сложно понять, что может быть не так.

Еще раз обьясню, проблема на самом деле не очень простая. Создаю MDI форму, из нее вызываю Child форму:

frmAddStructure addStructure = new frmAddStructure();
addStructure.MdiParent = this;
addStructure.Show();

Это например форма в которой ползователь видет некую структуру. Теперь возникает проблема. Необходимо эту структуру редактировать. Пользователь на этой форме должен нажать кнопку редактировать и должно появиться второе окно, поверх первого в котором пользователю будет предложено ввести какие то данные, причем понятно, что это окно должно быть модальным по отношению к первому, но как я уже говорил вызвать вторую форму с помощю ShowDialog() нельзя, возникает ошибка, типа в MDI приложение нельзя использовать модальные окна, ну это и понятно. Я вот и хочу узнать какие есть методы обойти эту штуку??? Мне это очень нужно и отказаться от структуры приложения MDI я не могу. Может можно придумать какую нить хитрость???
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32766476
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
  frmAddStructure addStructure = new frmAddStructure();
  addStructure.ShowDialog(this);	

и получаешь модальное окошко.
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32932396
roman2311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
keralesПользователь на этой форме должен нажать кнопку редактировать и должно появиться второе окно, поверх первого в котором пользователю будет предложено ввести какие то данные, причем понятно, что это окно должно быть модальным по отношению к первому, но как я уже говорил вызвать вторую форму с помощю ShowDialog() нельзя, возникает ошибка, типа в MDI приложение нельзя использовать модальные окна, ну это и понятно. Я вот и хочу узнать какие есть методы обойти эту штуку??? Мне это очень нужно и отказаться от структуры приложения MDI я не могу. Может можно придумать какую нить хитрость???
Я до сих пор не решил эту проблему. Как я ни пробовал, но стандартная модальная форма не может содержать свойство addStructure.MdiParent = this;
Пытался решить эту проблему через потоки в которых будет происходить ожидание. Но модальная форма не может быть создана в другом потоке :(

Какие еще есть варианты? Поделитесь кто знает
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32932468
Алексей Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не путаете ли Вы понятие модальность с каким-нибудь другим. Ведь по определению модальное окно блокирует доступ ко всему приложению пока не получит реакции от пользователя.

кто-то спорил на этот счет]http://www.sql.ru/forum/actualpost.aspx?bid=20&tid=142651&mid=0&p=1#1154298

Если я правильно понял Вам нужна форма, со следующим свойством: блокировать доступ к первому окну пока открыто второе.

Вижу несколько путей.

Один такой. Создать собственную форму наследованную от Forms (или создать соответствующий интерфейс). Добавить свойства, типа, "родительская форма" и/или "дочерняя форма". В главной форма в событии MdiChildActivate анализировать описанные свойства и активизировать нужную форму.
...
Рейтинг: 0 / 0
ShowDialog() в MDI форме
    #32932694
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вам addStructure.MdiParent = this; ???
Благодаря этой строке, форма ввода становится модальной и ее действительно нельзя уже открыть через ShowDialog().
Без указания MdiParent модальная форма замечательно открывается.
Или вам нужно, чтобы эта форма была модальной только для "своей" mdi-формы, не блокируя работу с остальными mdi-формами?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ShowDialog() в MDI форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]