Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 15:45   #1
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию Обращение к главной форме

Недавно начали в универе осваивать Microsoft Visual Studio 2008. Понравилось. Захотелось написать свой простецкий блокнот.
Добавил на главную форму окна еще форму поиска. При нажатии "Найти..." выскакивает форма (при нажатии создаю экземпляр формы поиска и юзаю его).
Как управлять формой поиска из главной, я разобрался. А вот как обратиться к элементам главной формы? Экземпляр внутри дочерней что ли создавать? Глупо.
Подскажите, пожалуйста, корифеи
Вот куски кода:
Код:
public: notepad::FindForm^ FindForm; // создаю переменную типа формы поиска

FindForm = gcnew notepad::FindForm(); // в конструкторе главной формы инициализирую

FindForm->Show(); // внутри обработчика нажатия на главной форме пишу вызов формы поиска.
krow7 вне форума Ответить с цитированием
Старый 23.05.2012, 21:08   #2
oleg_kn
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 10
По умолчанию

Можно передать главную форму как аргумент
Код:
GroupFields player1(this); //в класе главной форми

GroupFields(System::Windows::Forms::Form ^f) //там куда нужно передать
{}
oleg_kn вне форума Ответить с цитированием
Старый 23.05.2012, 22:46   #3
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Так пробовал делать, но как затем обратиться к элементам формы, которые уже нанесены на нее через конструктор (кнопки, поля и т.п.) ? Фактически, они же еще не созданы, т.е. IntelliSense не выдает объекты главной формы
krow7 вне форума Ответить с цитированием
Старый 23.05.2012, 23:41   #4
oleg_kn
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 10
По умолчанию

Не знаю подойдет ли, но можно попробивать из *.cpp файла в котором обьект создается

Код:
Application::Run(gcnew Form1())  //так стандартно генерируется
;
Сделать вот так
Код:
Form1 ^my = gcnew Form1();
Application::Run(my);
тогда другую форму активировать отсюда и передавать my аргументом
oleg_kn вне форума Ответить с цитированием
Старый 24.05.2012, 21:21   #5
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

так тоже пробовал. переменная my видна только в теле функции main(), т.е. недоступна ни классам, никому вообще. глобальной объявить ее тоже не выйдет, т.к. переменные ссылочного типа за функцией main нельзя определять. а жаль
krow7 вне форума Ответить с цитированием
Старый 26.05.2012, 15:07   #6
oleg_kn
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 10
По умолчанию

Файл test.cpp
Код:
Form1 ^my = gcnew Form1();
Form2 ^new_form = gcnew Form2();
new_form->func(my);
Application::Run(my);
Файл Form2.h
Код:
using namespace test;

public ref class Form2: public System::Windows::Forms::Form{
public:
	void func(Form1 ^f1)
	{

	}
};
Вот что-то типа такого работает)
Только после Application::Run(my); код не виполняется))
Можно сделать дополнительний клас в котором сохранить указатели на 2 форми.
oleg_kn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Центрировать диалог на главной форме ZvEr_HaCkEr Общие вопросы Delphi 9 25.08.2010 05:34
Отображение на главной форме Gamst Общие вопросы Delphi 3 26.05.2010 01:34
Отображение на главной форме Gamst Помощь студентам 1 26.05.2010 01:28
Присвоение форме статус главной AlexeyWorking Помощь студентам 2 20.09.2009 15:58
Обращение ко второй форме RIO Общие вопросы .NET 3 07.05.2008 00:48