Уроки Windows Forms C++/C#
Объединение двух форм в MVS C++В данном уроке будет рассмотрен очень актуальный и популярный вопрос – "Как связать две формы?". Написано огромнейшее количество программ, в которых после нажатия кнопки появляется новая форма с новыми элементами. Рассмотрением этого вопроса мы и займёмся. В этом уроке будет показан простой пример, того как связать две форма, а в "следующем уроке" уже будет рассмотрено создание простой базы данных. И так, первым делом создайте проект в приложение "Windows Forms", после этого появиться, уже наверно, привычная вам форма. Теперь нужно создать вторую форму в этом жу проекте – это делается следующим образом: выбираете в верхнем меню раздел "Проект", после чего откроется новою меню, в котором нужно будет выбрать "Добавить новый элемент", после этого появиться новое окно, в котором уже будет выделен элемент "Форма Windows Forms", вам нужно будет назвать его –"form2". Ниже представлена иллюстрация действий:


После этого на панели появиться вторая форма конструктора. Суть учебного примера следующая – на "Form1" находится текстовое поле и кнопка, в текстовое поле вводится число, нажимается кнопка, введенное число возводится в квадрат, после чего появляется "form2" на котором тоже есть текстовое поле, где будет показан результат возведения числа в квадрат. Важно понять следующее – поскольку элемент "textBox1" будет находится на обоих формах, то его нужно объявить как public в верху кода формы "form2", а в коде формы "Form1" в самом верху кода подключить библиотеку второй формы #include "form2", так же в одном из событий нужно писать: form2^ gform2 = gcnew form2;              gform2->Show();              gform2->какой-то элемент;
Перенесите на первую форму "textBox" и "button", а на вторую просто "textBox". Теперь в форму один запишите этот код:Form1
#pragma once #include "form2.h" namespace Two_Forms { using namespace System; . . . #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Single a, b = 0; Single A = Single::TryParse(textBox1->Text, System::Globalization::NumberStyles::Number, System::Globalization::NumberFormatInfo::CurrentInfo, a); b = a*a; textBox1->Text = String::Format("Равно: {0:F5}", b); form2^ gform2 = gcnew form2; gform2->Show(); gform2->textBox1->Text = this->textBox1->Text; } }; }
А в "form2" просто поменяйте private на public у элемента textBox ^
form2
#pragma once namespace Two_Forms { using namespace System; . . . public: System::Windows::Forms::TextBox^ textBox1; // <--- protected: private: /// <summary> /// Требуется переменная конструктора. /// </summary> . . .
Результат:
Следующий урок >>