У меня есть основная форма (назовем ее frmHireQuote), которая является дочерней по отношению к основной форме MDI (frmMainMDI), которая показывает другую форму (frmImportContact) через ShowDialog () при нажатии кнопки.
Когда пользователь нажимает «ОК» на frmImportContact, я хочу передать несколько строковых переменных обратно в некоторые текстовые поля в frmHireQuote.
Обратите внимание, что может быть несколько экземпляров frmHireQuote, очевидно, что важно вернуться к экземпляру, который вызвал этот экземпляр frmImportContact.
Какой лучший способ сделать это?
источник
Я обычно создаю статический метод в форме / диалоге, который я могу вызвать. Это возвращает успех (кнопка ОК) или неудачу вместе со значениями, которые необходимо заполнить.
И на форме:
Позвонить в вашу форму;
источник
frm
can (и только что, когда я его прочитал) приводит к путанице ...Нашел еще одну небольшую проблему с этим кодом ... или, по крайней мере, это было проблематично, когда я пытался его реализовать.
Кнопки в frmMain не возвращают совместимое значение, используя VS2010, я добавил следующее, и все стало работать нормально.
После добавления значений двух кнопок диалог работал отлично! Спасибо за пример, это действительно помогло.
источник
Я просто помещаю в конструктор что-то по ссылке, чтобы подчиненная форма могла изменить свое значение, а основная форма могла получить новый или измененный объект из подчиненной формы.
источник
Я использую MDI довольно много, мне это нравится гораздо больше (где его можно использовать), чем несколько плавающих форм.
Но чтобы извлечь из этого максимум, вам нужно разобраться с собственными событиями. Это делает жизнь намного проще для вас.
Пример скелета.
Иметь свои собственные типы прерываний,
Тогда ваш собственный тип Args
Затем используйте делегата в вашем пространстве имен, но вне класса
Теперь вручную или с помощью графического интерфейса попросите MDIparent реагировать на события дочерних форм.
Но с вашим Args, вы можете уменьшить это до одной функции. и вы можете иметь возможность прерывать прерывания, что хорошо для отладки, но может быть полезно и в других отношениях.
Просто пусть все ваши коды событий mdiparent указывают на одну функцию,
Простого механизма переключения обычно достаточно для передачи событий в соответствующие формы.
источник
Если вы хотите передать данные
form2
изform1
без передачи, как новыйform(sting "data");
Делай так в форме 1
в форму 2 добавить
Также вы можете использовать значение в
form1
этом, если вы хотите поменять что-то вform1
только в форме1
источник
Сначала вы должны определить атрибут в form2 (дочерний), вы обновите этот атрибут в form2, а также из form1 (родительский):
Вызов form2 (child) из form1 (parent):
источник
Я поднимаю событие в форме, устанавливающей значение, и подписываюсь на это событие в формах, которые должны иметь дело с изменением значения.
источник
делегаты - лучший вариант для отправки данных из одной формы в другую.
источник