| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Связь между формами |
| Автор: svarogik 8.6.2008, 20:29 |
| у меня есть в приложении две формы, хочу чтобы при нажатии кнопки на одной форме на другой в лист боксе чето появлялось, и заодно запускался один из встроенных методов в форме, подскажите как |
| Автор: Raid 8.6.2008, 22:08 |
| Из главной в дочернюю можно передавать так: В классе дочерней формы пишешь метод заполнения листбокса В главной форме при нажатии на кнопку вызываешь этот метод через объект второй формы и на сторой формочке всё заполняется Если нужны параметры из главной формы, то методу их передавай |
| Автор: informatik 8.6.2008, 22:19 |
| Я думаю тут должно быть уточнение - в каком порядке эти формы запускаются и запускают ли друг друга?. Как я понял эти формы не запускают друг друга, а каждая отдельно, .т.е они функционируют не зная о друг друге? |
| Автор: Raid 8.6.2008, 22:25 |
| Значит третий объект, который знает о существовании обеих форм, подписывается на клик кнопки на первой форме и вызывает описанный метод для второй формы. |
| Автор: svarogik 8.6.2008, 22:27 |
| нет две дочерние формы вызываются при создании главной, а как вызвать метод? у меня так в форме есть процедурка, которая в массив (поле класса форма) добавляет елемент, я хочу чтоб элемент добавлялся при нажатии кнопки на другой форме Добавлено через 6 минут и 17 секунд я еще не совсем понимаю как главная форма создается, ведь я пока описываю только абстрактный класс, к абстрактному обьекту обратится нельзя, а как там она будет называться при инициализации не совсем понимаю |
| Автор: Raid 8.6.2008, 22:49 | ||||||
Смотри, главная форма это form1 Можно типо паттерна Наблюдатель организовать
вторая форма это форма, по которой кликают
и в третьей
|
| Автор: svarogik 8.6.2008, 22:50 |
| еще уточнение мне надо чтоб по нажатию в дочерней писалось в другой дочерней, а процедурка в главной Добавлено через 4 минуты и 30 секунд и кнопок несколько, в зависимости от того какая нажата нужно вызвать разные процедуры, и написать разный текст в листбокс Добавлено через 4 минуты и 52 секунды мне для каждой кнопки наблюдателя чтоли делать? |
| Автор: svarogik 8.6.2008, 23:11 | ||
там где пометил ошибка выскакивет, не совсем везжаю что за дела Unable to cast object of type 'WindowsApplication5.Form1' to type 'WindowsApplication5.IObserver'. в других формах все сделал как надо |
| Автор: Raid 8.6.2008, 23:18 | ||||||||||
| Извини, я одним глазом футбол смотрю)) Необязательно для каждой кнопки наблюдателя. при клике каждой кнопы вызывай HandleClick , но ему например число передавай, по которому будешь определять какая кнопка нажата. И для каждой кнопки свое число. интерфейс поменять чуть-чуть
Даже наверное проще можно. Form3 можно объявить как наблюдателя
А в главной форме сначала объект формы3 инициализируешь и передаешь в конструктор второй
Обрати внимание в объявлении Form3 ещё и интерфейс IObserver написан. без этого привести объект Form3 к типу IObserver не получится |
| Автор: svarogik 9.6.2008, 00:25 |
| ничего не понял в последней строчке. интерфейс описан вне класса ,при написании внутри формы мы просто создаем новый метод, который с нашим обсервером никак не связан, нет вообще конечно все запускается, но как чтото сделать на главной не знаю как |
| Автор: Raid 9.6.2008, 00:45 | ||||
говорю же, надо указать что формочка реализует этот интерфейс Form3: From, IObserver. Это и есть связка.
у тебя алгоритм, который определяет что нужно заносить в листбокс в главной форме или в самой дочерней ??? Если что можем в аське продолжить и не шлёпать тут сообщения )) аська в профиле у меня |