![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
есть две формы Form1 и Form2. При нажатии на кнопку в первой должна открываться вторая, а при написании в ней сообщения в текстбоксе оно должно посылаться в первую форму в label.
Вопрос: почему из второй формы не видны сразу переменные первой, и почему нельзя просто написать в обработчике Button1_click типа Form1.label1.text=textBox1.text; ? Что для этого нужно сделать? Обязательно ли передавать данные во вторую форму с именем первой в конструкторе вот так? Form2 frm = new Form2(this); frm.Show(); Вот код второй формы:
Т.е., если хочешь что-то изменить из одной формы в другой по нажатию кнопки, обязательно ей передавать в конструктор первую форму в качестве параметра (new Form2(this);)? Или можно по-другому? -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Вопрос уже много раз подымался. Если вкратце - через события. Подробнее - можно в поиске найти.
-------------------- I don't need a reason being who I am... |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
я не очень понимаю, по обработчику какого события в первой форме присваивать label1.Text=...? ввели текст во вторую форму, нажали ОК, и как теперь это обработать в первой форме?
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
примерно так (код не проверялся)
|
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
можно и без этого. Делегаты я еще не выучил. Просто объявляем в Form2 переменную public string a. И потом обращаемся из 1 формы к frm.a
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| v_enom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 11.10.2006 Репутация: нет Всего: нет |
ничего не понятно....какие еще делегаты. Блин, неужели нет простого способа получить доступ к свойствам объектов??? напишите пожалуйста простой нормальный пример для зеленых новичков без всяких непонятных += delegate() и т.д.
Как в билдере чтобы Form1.TextBox = "xxxx" я пробовал создать
но не срабатывает. нету эффекта и правильно, потому что mainForm эту уже совсем другая форма |
|||
|
||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 1 Всего: 62 |
На самом деле это в билдере и дельфях было не нормально, а через делегаты самое то! Мы не ищем лёгких путей!
|
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Если хочешь получать доступ к полям одной формы из другой делай поля public static и к контролу тоже можно получить доступ!
|
|||
|
||||
| EgoBrain |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
В зависимости от версии студии делай так (у меня 2008. В 2005 и 2008 модульность проекта по другому строится в отличии от 2003):
Первая форма:
Вторая форма:
А вот модуль объектов Form1 (для студий начиная от 2005) Form1.designer.cs:
Насколько это правильно и этично с точки зрения ООП х3, но если есть такая возможность, значит создатели это предусмотрели и так можно. Поле первой формы form1 необходимо делать static, чтобы оно однозначно определялось в единственном экземпляре. |
||||||
|
|||||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: нет Всего: 11 |
Я думаю, разница с дельфями заключается просто в заорганизованности. Думаю, что можно залезть во вторую часть класса, которую пишет сама студия, и поменять там у нужных элементов private на public или internal. А в дельфях они просто по умолчанию public.
Но только ведь их неспроста сделали private, значит есть какой-то замысел, который ты нарушишь. Потом что-нибудь не так будет работать и нифига не поймёшь, отчего. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Здесь дело вовсе не в этике. Просто если в программе при таком методе будет создано несколько экземпляров формы, то эта статическая переменная будет содержать ссылку только на последнюю из них. Кроме того проблема доступа к private - членам решена не будет(если я правильно понял идею). public - поля по-умолчанию... считается, что это не есть хорошо. Никуда не надо лезть. Просто в свойствах элемента(в дизайнере) есть такое как Modifers ему надо присвоить нужное значение и всё. Другой вопрос, что проблему доступа к вызвавшей форме это не решит. В большинстве случаев в таких ситуациях вторая форма вызывается как диалоговое окно, а после её закрытия с неё считывается информация и заносится в нужные поля. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |