Как связать две формы в с


  • Последнее обновление: 31.10.2015

    Чтобы добавить еще одну форму в проект, нажмем на имя проекта в окне Solution Explorer (Обозреватель решений) правой кнопкой мыши и выберем Add(Добавить)->Windows Form...

    добавление новой формы

    Дадим новой форме какое-нибудь имя, например, Form2.cs:

    создание новой формы

    Итак, у нас в проект была добавлена вторая форма. Теперь попробуем осуществить взаимодействие между двумя формами. Допустим, первая форма по нажатию на кнопку будет вызывать вторую форму. Во-первых, добавим на первую форму Form1 кнопку и двойным щелчком по кнопке перейдем в файл кода. Итак, мы попадем в обработчик события нажатия кнопки, который создается по умолчанию после двойного щелчка по кнопке:

    private void button1_Click(object sender, EventArgs e) { }

    Теперь добавим в него код вызова второй формы. У нас вторая форма называется Form2, поэтому сначала мы создаем объект данного класса, а потом для его отображения на экране вызываем метод Show:

    private void button1_Click(object sender, EventArgs e) { Form2 newForm = new Form2(); newForm.Show(); }

    Теперь сделаем наоборот - чтобы вторая форма воздействовала на первую. Пока вторая форма не знает о существовании первой. Чтобы это исправить, надо второй форме как-то передать сведения о первой форме. Для этого воспользуемся передачей ссылки на форму в конструкторе.

    Итак перейдем ко второй форме и перейдем к ее коду - нажмем правой кнопкой мыши на форму и выберем View Code (Просмотр кода). Пока он пустой и содержит только конструктор. Поскольку C# поддерживает перегрузку методов, то мы можем создать несколько методов и конструкторов с разными параметрами и в зависимости от ситуации вызывать один из них. Итак, изменим файл кода второй формы на следующий:

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HelloApp { public partial class Form2 : Form { public Form2() { InitializeComponent(); } public Form2(Form1 f) { InitializeComponent(); f.BackColor = Color.Yellow; } } }

    Фактически мы только добавили здесь новый конструктор public Form2(Form1 f), в котором мы получаем первую форму и устанавливаем ее фон в желтый цвет. Теперь перейдем к коду первой формы, где мы вызывали вторую форму и изменим его на следующий:

    private void button1_Click(object sender, EventArgs e) { Form2 newForm = new Form2(this); newForm.Show(); }

    Поскольку в данном случае ключевое слово this представляет ссылку на текущий объект - объект Form1, то при создании второй формы она будет получать ее (ссылку) и через нее управлять первой формой.

    Теперь после нажатия на кнопку у нас будет создана вторая форма, которая сразу изменит цвет первой формы.

    Мы можем также создавать объекты и текущей формы:

    private void button1_Click(object sender, EventArgs e) { Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); }

    При работе с несколькими формами надо учитывать, что одна из них является главной - которая запускается первой в файле Program.cs. Если у нас одновременно открыта куча форм, то при закрытии главной закрывается все приложение и вместе с ним все остальные формы.


    Источник: https://metanit.com/sharp/windowsforms/2.3.php



    Рекомендуем посмотреть ещё:


    Закрыть ... [X]

    Похожие новости


    Как вязать крючком одежду для к
    Буденовка как вязать
    Аппликация из бумаги робот
    Вязание глубокого выреза
    Архивы с вышивками


    Как связать две формы в с
    Как связать две формы в с


    C# - Как связать две формы? - Stack Overflow на русском
    Создание формы, содержащей подчиненную форму (форма с отношением.)



    ШОКИРУЮЩИЕ НОВОСТИ