Как открыть окно в windows form

  1. Use the Form.Show() Method to Open a New Form Using a Button in C#

  2. Use the Form.ShowDialog() Method to Open a New Form Using a Button in C#

How to Open a Form Using a Button in C#

This tutorial will teach you how to access forms using buttons when developing applications in C#.

Use the Form.Show() Method to Open a New Form Using a Button in C#

It belongs to the System.Windows.Forms namespace and shows or displays a new form to the user. It only works for non-modal forms and can efficiently display, show, or control them.

Before calling this method, its Owner property must be set to owner so the new form can access this property to get information about the owning form. The new form will be visible after setting its Visible property to true.

You need to instantiate it as an object by creating a new object from the active form’s class. Use this instantiated object to call the Show() method, and you can access the new form.

Code — Form1.cs:

using System;
using System.Windows.Forms;

namespace openFormfromClickEvent {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      // create an object of `Form2` form in the current form
      Form2 f2 = new Form2();

      // hide the current form
      this.Hide();

      // use the `Show()` method to access the new non-modal form
      f2.Show();
    }
  }
}

Output:

open form using form.show() method in csharp

Using a button to access another form can have multiple benefits as you can replicate a form as needed and easily and effectively modal some basic workflow of your C# applications. In Winforms, you can structure your applications by handling forms via Click events to manipulate the GUI.

Use the Form.ShowDialog() Method to Open a New Form Using a Button in C#

Similar to the Form.Show() method, It opens a new form as a model dialog box in your C# application, and every action in this dialog box is determined by its DialogResult property.

You can set the DialogResult property of the form programmatically or by assigning the enumeration value of the modal form to the DigitalResult property of a button. The Form.ShowDialog() method returns a value that can be used to determine how to process actions in the new modal form.

As a modal dialog box is set to Cancel, it forces the form to hide, unlike the non-modal forms. When a form is no longer in service or required by your C# application, the Dispose method becomes helpful because using the Close method can hide a form instead of closing it, which means it can be shown again without creating a new instance of the modal form.

This method does not specify a form of control as its parent as a currently active form becomes the owner (parent) of the dialog box or modal form. If there comes a need to specify the owner of this method, use the Form.ShowDialog(IWin32Window) version of the method, which shows the form as a modal dialog box with the specified owner.

Code — Form1.cs:

using System;
using System.Windows.Forms;

namespace openFormfromClickEvent {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      // create an object of `Form2` form in the current form
      Form2 f2 = new Form2();

      // hide the current form
      this.Hide();

      // use the `ShowDialog()` method to access the new modal form
      f2.ShowDialog();
    }
  }
}

Output:

open form using form.showdialog() method in csharp

To hide an active form, use this.Hide() method and to close a form use this.Close() method in a button_Click event.

C# application developers must know about event handling to perform some actions on a form. The Form.cs [Design] of your C# project in Visual Studio contains the visual representation of your form elements, and by double-click, a design element can automatically create an event handler method that controls and respond to events generated from controls and a button clicked event is one of them.

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe

There is a common and simple requirement in windows applications to Open a new form(say Form2) when clicked a button in Form1 and also close Form1 at the same time.

Table of Contents

  • On Button Click Open Form 2 and Close Form 1
    • 1)  Close Form1 and Show Form2 – C#
    • 2)  Use Application.Run for each form in Main() method
    • 3) Hide Form1 and Show Form2 – C#
  • Summary

On Button Click Open Form 2 and Close Form 1

There are many ways you can close current form and open a new form in .NET.See below,

1)  Close Form1 and Show Form2 – C#

private void btnLogin_Click(object sender, EventArgs e)
{
     this.Close(); //Close Form1,the current open form.

     Form2 frm2 = new Form2();

     frm2.Show(); // Launch Form2,the new form.
}

2)  Use Application.Run for each form in Main() method

//Declare a boolean property.This property to be set as true on button click.

public bool IsLoggedIn { get; set; }

private void btnLogin_Click(object sender, EventArgs e)
{
    this.Close(); //Close Form1

    /* Set the property to true while closing Form1.This propert will be checked 
       before running Form2 in Main method.*/
    IsLoggedIN = true;
}

Then Update the Main() method as below.

[STAThread]
static void Main()
{
     Application.EnableVisualStyles();

     Application.SetCompatibleTextRenderingDefault(false);

     Form1 frm1 = new Form1();

     Application.Run(frm1);

    /*Here the property IsLoggedIn is used to ensure that Form2 won't be shown when user closes Form1 using X                 button or a Cancel  button inside Form1.*/
    if (frm1.IsLoggedIn)
    {
       Application.Run(new Form2());
    }

}

3) Hide Form1 and Show Form2 – C#

Here Form1 will remain open as long as the application is live.This option is the worst and hence not at all suggested.

private void btnLogin_Click(object sender, EventArgs e)
{
   this.Hide(); //Hide Form1.

   Form2 frm2 = new Form2();

   frm2.Show(); // Launch Form2
}

Summary

In this post we have seen samples to close Form1 and open Form2 in C# and same code logic can be used in VB.NET. Hope these code snippets has helped you to rectify the issues during close one form and open another form in C# or VB.NET. Leave your comments in the comment section below.

Related Items : 
Close one form and Open another form On Button click,
Open new Form but Closing current Form,
vb.net close form from another form,
How to close form1 and open form2 in VB.NET,
Application.run to close a form and open another form

Reader Interactions

Trackbacks

До сих пор мы создавали только консольные приложения.
Но программисты на C# широко используют формы для создания пользовательских интерфейсов.
И в сегодняшней статье мы создадим простое оконное приложение.

В примерах используем русскую версию программы Visual Studio 2012.
Первый шаг — начать новый проект и создать форму. Для чего откройте Visual Studio и выберите Файл-> Создать -> Проект, а в диалоговом окне нового проекта выберите Visual C#- Windows и выберите Приложение Windows Forms. Введите имя проекта в нижней части диалогового окна и нажмите кнопку ОК. На следующем рисунке показано, как создать новую форму в Visual Studio.

Изображение

В диалоговом окне Новый проект выберите Приложение Windows Forms».

Изображение

После выбора приложения Windows Forms вы можете увидеть форму по умолчанию (Form1) в своем новом проекте C#. Форма Windows Form, которую вы видите в представлении «Конструктор», представляет собой визуальное представление окна, которое открывается при открытии вашего приложения.

Изображение

Каждый раз, когда вы создаете приложение Windows, Visual Studio будет отображать пустую форму по умолчанию, на которую вы можете перетащить элементы управления на основную форму приложения и настроить их размер и положение.

Если вы хотите установить какие-либо свойства формы, вы можете использовать окно свойств Visual Studio, чтобы изменить их. Есливы не видите окно Свойств, в меню ВИД щелкните Окно свойств. В этом окне перечислены свойства выбранной в данный момент формы Windows или элемента управления, и здесь вы можете изменить существующие значения.

Далее на вкладке ВИД открываем панель элементов. Находим там виджет Button и перетаскиваем его на форму. Дважды щелкаем по новому элементу и открываем окно с кодом кнопки.

  private void button1_Click(object sender, EventArgs e)
  {
   // вводим следующий код
     MessageBox.Show("Привет Мир");

  }

Запускаем приложение.

Изображение

При нажатии на кнопку на экране должно появиться приветствие.
Результат:

Таким образом мы наглядно увидели возвожности создания оконных приложений с C# и Visual Studio, а также привязали к форме кнопку реагирующей на нажатие.

  • Создано 12.10.2021 11:38:18

  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так:

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

I have an application that among other things has an Edit Button and when the user clicks on that button I want a new window to open with various textboxes for editing purposes.

I can create a new window with code like

Form editform = new Form();

But I want to design that window in the Designer too.

  • c#
  • .net
  • winforms

asked Aug 17, 2011 at 20:42

user850010user850010

6,33112 gold badges39 silver badges60 bronze badges

1

  • It’s trivial but that isn’t a reason to close it. If one beginner programmer came here to ask this question, others will too (And find this one, hopefully).

    Aug 17, 2011 at 20:52

2 Answers

In Visual Studio, right-click on your project and select Add->Windows Form. That will give you a new form to work with. Lay it out how you want. Then you can launch the window from your main window with code similar to the following:

MyEditForm form = new MyEditForm();
form.Show();

answered Aug 17, 2011 at 20:46

Brian DriscollBrian Driscoll

19.4k3 gold badges46 silver badges65 bronze badges

3

  • I also want to add check out the DialogResult to return whether edit was successful, etc.

    Aug 17, 2011 at 23:23

  • Opening it in a non-modal way?

    Apr 23, 2015 at 11:51

  • @PeterMortensen Show() is not modal; for a modal dialog you’d want to call the ShowDialog() method instead.

    Apr 23, 2015 at 13:14

To answer Rick’s comment on Brian’s answer:

        using (var login = new Login())
        {
            switch(login.ShowDialog())
            {
                case DialogResult.OK:
                    Application.Run(new Studio());
                break;
            }
        }

answered Aug 15, 2012 at 16:41

LevitikonLevitikon

7,7499 gold badges57 silver badges74 bronze badges

1

  • Would that be behaving like a modal dialog, then?

    Apr 23, 2015 at 12:04

I have an application that among other things has an Edit Button and when the user clicks on that button I want a new window to open with various textboxes for editing purposes.

I can create a new window with code like

Form editform = new Form();

But I want to design that window in the Designer too.

  • c#
  • .net
  • winforms

asked Aug 17, 2011 at 20:42

user850010user850010

6,33112 gold badges39 silver badges60 bronze badges

1

  • It’s trivial but that isn’t a reason to close it. If one beginner programmer came here to ask this question, others will too (And find this one, hopefully).

    Aug 17, 2011 at 20:52

2 Answers

In Visual Studio, right-click on your project and select Add->Windows Form. That will give you a new form to work with. Lay it out how you want. Then you can launch the window from your main window with code similar to the following:

MyEditForm form = new MyEditForm();
form.Show();

answered Aug 17, 2011 at 20:46

Brian DriscollBrian Driscoll

19.4k3 gold badges46 silver badges65 bronze badges

3

  • I also want to add check out the DialogResult to return whether edit was successful, etc.

    Aug 17, 2011 at 23:23

  • Opening it in a non-modal way?

    Apr 23, 2015 at 11:51

  • @PeterMortensen Show() is not modal; for a modal dialog you’d want to call the ShowDialog() method instead.

    Apr 23, 2015 at 13:14

To answer Rick’s comment on Brian’s answer:

        using (var login = new Login())
        {
            switch(login.ShowDialog())
            {
                case DialogResult.OK:
                    Application.Run(new Studio());
                break;
            }
        }

answered Aug 15, 2012 at 16:41

LevitikonLevitikon

7,7499 gold badges57 silver badges74 bronze badges

1

  • Would that be behaving like a modal dialog, then?

    Apr 23, 2015 at 12:04

Windows Forms — одна из важных технологий для создания графического интерфейса в приложениях на платформе Windows. В некоторых случаях может потребоваться открыть новое окно, чтобы добавить дополнительную функциональность или показать дополнительную информацию. В этой статье мы рассмотрим, как открыть новое окно с помощью Windows Forms и предоставим пошаговую инструкцию для достижения этой цели.

Шаг 1: Создайте новую форму

Первым шагом является создание новой формы, которую вы хотите открыть. Вы можете сделать это, щелкнув правой кнопкой мыши на проекте в Solution Explorer и выбрав «Add» > «Windows Form» из контекстного меню. Затем введите имя для новой формы и нажмите «Add».

Шаг 2: Создайте экземпляр формы и откройте ее

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

YourFormName newForm = new YourFormName();

newForm.Show();

Шаг 3: Настраиваемые параметры (при необходимости)

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

YourFormName newForm = new YourFormName(parameter1, parameter2);

newForm.Show();

Теперь у вас есть полная пошаговая инструкция о том, как открыть новое окно в Windows Forms. Следуя этим шагам, вы сможете легко добавить дополнительную функциональность и улучшить пользовательский интерфейс своего приложения.

Содержание

  1. Шаг 1: Откройте проект в Microsoft Visual Studio
  2. Шаг 2: Добавьте новую форму
  3. Шаг 3: Создайте кнопку «Открыть новое окно»
  4. Шаг 4: Напишите код для открытия нового окна
  5. Вопрос-ответ

Шаг 1: Откройте проект в Microsoft Visual Studio

Перед тем как открыть новое окно в Windows Forms, вам необходимо открыть ваш проект в Microsoft Visual Studio.

1. Запустите Microsoft Visual Studio и откройте ваш проект, в котором вы хотите создать новое окно.

2. Для этого выберите меню «Файл» (File), а затем «Открыть» (Open). Вы можете также воспользоваться горячими клавишами Ctrl+O.

3. В открывшемся диалоговом окне выберите папку с вашим проектом и щелкните на ней, чтобы выделить ее. Затем нажмите кнопку «Открыть» (Open).

4. Теперь ваш проект открыт в Microsoft Visual Studio и вы можете приступить к созданию нового окна.

Примечание: Убедитесь, что ваш проект является проектом Windows Forms, который поддерживает создание окон. Если ваш проект не является проектом Windows Forms, вам может потребоваться создать новый проект или изменить тип вашего проекта.

Шаг 2: Добавьте новую форму

Чтобы открыть новое окно в Windows Forms, вам необходимо добавить новую форму к вашему проекту.

Чтобы создать новую форму, в Visual Studio вы можете нажать правой кнопкой мыши на проекте в обозревателе решений, выбрать пункт «Добавить» и затем «Новый элемент». Затем выберите тип элемента «Windows Forms» и нажмите кнопку «ОК».

После этого в вашем проекте появится новая форма с расширением .cs (для C#) или .vb (для Visual Basic), которую вы сможете открыть и редактировать.

Вы также можете создать новый класс формы, щелкнув правой кнопкой в обозревателе решений, выбрав пункт «Добавить» и затем «Класс». Затем введите имя вашей новой формы и убедитесь, что тип базового класса установлен на «Form».

Ваша новая форма будет отображаться в обозревателе решений, где вы сможете добавить различные элементы управления, настроить свойства формы и написать логику вашего приложения.

В этом шаге вы добавили новую форму к вашему проекту Windows Forms. Теперь вы готовы перейти к следующему шагу и настроить открытие нового окна при нажатии кнопки или другого события.

Шаг 3: Создайте кнопку «Открыть новое окно»

Для того чтобы открыть новое окно в приложении Windows Forms, нам необходимо создать кнопку, при нажатии на которую будет происходить открытие нового окна. В данном шаге мы добавим эту кнопку на форму.

  1. Откройте файл формы, на которой вы хотите добавить кнопку. Обычно это файл с расширением .cs.
  2. Разместите курсор в месте, где вы хотите разместить кнопку.
  3. В контейнере элементов управления (обычно это панель инструментов «Разметка» или «Компоненты», находящаяся справа) найдите кнопку, и перетащите ее на нужное место на форме.
  4. Измените свойства кнопки при необходимости. Например, вы можете задать текст кнопки, стиль, размеры и др.

Теперь у вас есть кнопка, при нажатии на которую будет открываться новое окно. В следующем шаге мы научимся добавлять код, который будет отвечать за открытие нового окна при нажатии на кнопку.

Шаг 4: Напишите код для открытия нового окна

Чтобы открыть новое окно в Windows Forms, вам понадобится немного кода. Вам нужно определить новую форму, создать экземпляр этой формы и открыть ее.

Вот пример кода, который вы можете использовать для открытия нового окна:

private void открытьНовоеОкноToolStripMenuItem_Click(object sender, EventArgs e)
{
НовоеОкно новаяФорма = new НовоеОкно();
новаяФорма.Show();
}

В этом примере мы создаем новый экземпляр формы с именем «НовоеОкно» и вызываем метод «Show()» для отображения этой формы. Как только этот код выполнится, новое окно будет открыто и станет видимым для пользователя.

Вы также можете добавить код, который будет выполняться при открытии нового окна. Например, вы можете передать данные из предыдущей формы в новую или настроить начальное состояние элементов управления в новой форме.

Теперь у вас есть все, что нужно, чтобы открыть новое окно в Windows Forms. Вы можете повторить этот процесс для создания и открытия любого количества окон в своем приложении.

Вопрос-ответ

3 / 3 / 0

Регистрация: 10.10.2009

Сообщений: 92

1

Нажатием на кнопку, открыть/закрыть новое окно

22.10.2009, 17:12. Показов 67075. Ответов 5


При программирование под Windows, мне нжно при нажатии на кнопку, что открывалось новое окно и при нажатии на другую — происходил выход. Какими командами это реализвать?

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

22.10.2009, 17:12

5

Mike

18 / 18 / 2

Регистрация: 20.01.2009

Сообщений: 71

22.10.2009, 17:30

2

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public partial class Form1:Form
    {
        Form f;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button2_Click(object sender,EventArgs e)
        {
            f.Close();
        }
 
        private void button1_Click(object sender,EventArgs e)
        {
            f=new Form();
            f.Show();
        }
    }

вы это имели ввиду?

1

kirill29

2095 / 1260 / 171

Регистрация: 01.02.2009

Сообщений: 2,842

22.10.2009, 20:27

3

Выход из приложения можно реализовать и так:

C#
1
2
3
4
        private void button2_Click(object sender,EventArgs e)
        {
            Application.Exit();
        }

1

3 / 3 / 0

Регистрация: 10.10.2009

Сообщений: 92

22.10.2009, 20:31

 [ТС]

4

А как сделать, чтобы 2 форма, которую я вызываю при нажатии на кнопку в 1-ой форме, была доступна для редактирования ( ну чтоб туда я могла поместить еще кнопки)

Я нашла, спасибо

0

1923 / 428 / 41

Регистрация: 12.07.2007

Сообщений: 2,062

23.10.2009, 04:37

5

alenka012, не нужно торопиться создавать новую тему при первой же сложности. Пользуйтесь поиском по форуму.

0

GuitarFan

7 / 7 / 1

Регистрация: 12.02.2013

Сообщений: 352

07.04.2013, 15:54

6

Собственно, как же это сделать?

Добавлено через 6 минут
Может кому-то еще пригодится, сделал я это таким образом:
Создал новую форму в Solution Explorer, нажав правой кнопкой на проект, Add…
Затем написал код такой же, как тут предлагали, но уже с Form2 (имя формы, которую создал)

C#
1
2
            Form2 form = new Form2();
            form.Show();

Правильно или нет — не знаю, но работает. Может можно как-то лучше написать.

1

Добавление форм. Взаимодействие между формами

Последнее обновление: 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.
Если у нас одновременно открыта куча форм, то при закрытии главной закрывается все приложение и вместе с ним все остальные формы.

Visual Studio C#: использование Show() и ShowDialog для отображения окон (форм)


Добавил(а) microsin

  

Окна — основные интерфейса GUI-программы Visual Studio. Чтобы создать и отобразить окна, используют экземпляры (переменные) класса Form, и методы Show() и ShowDialog(). В статье рассматривается применение этих методов.

[Обычные окна, использование Show]

Show отображает обычное окно, а ShowDialog — модальное. В программу можно добавить произвольное количество форм (окон), все они будут действовать независимо, если отображены методом Show. Добавляется новое окно так: меню Проект -> Добавить форму Windows… -> Форма Windows Forms -> OK. По умолчанию будет добавлена форма Form2. Далее в модуле Program.cs добавьте код для отображения второй формы:

...
static void Main()
{
   Application.EnableVisualStyles();
   Application.SetCompatibleTextRenderingDefault(false);
   Form2 frm = new Form2(); 
   frm.Show();
   Application.Run(new Form1()); } ...

После запуска программы отобразятся сразу две формы, Form1 и Form2.

Чтобы можно было вызывать из Form1 подпрограммы и функции (методы) из Form2 (и наоборот), то необходимо инициализировать и запускать формы немного по-другому (код из Program.cs):

namespace MyApp
{
   static class Program
   {
      static public Form1 frm1;
      static public Form2 frm2;
 
      /// 
      /// Главная точка входа для приложения.
      /// 
      [STAThread]
      static void Main()
      {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         frm1 = new Form1();
         frm2 = new Form2();
         frm2.Show();
         Application.Run(frm1);
      }
   }
}

Пример вызова из класса Form2 (процедура Form2_FormClosed) метода класса Form1 (процедуру Close):

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
   Program.frm1.Close();
}

[Модальные окна, использование ShowDialog]

Модальное окно должно блокировать другие окна, пока не будет закрыто модальное окно. Обычно модальное окно используется для диалогов настройки, а также для фокусирования внимания пользователя на каком-то событии. В приложении в любое время может быть активно и доступно для пользователя только одно модальное окно. Часто диалог About тоже запускают как модальное окно.

Любую обычную форму можно запустить как модальное окно, если вместо Show() использовать ShowDialog(). Пример запуска диалогового (модального) окна настройки, вызываемого из меню:

      private void SetupStripMenuItem_Click(object sender, EventArgs e)
      {
         //Program.form2.Show();
         Program.form2.ShowDialog();
      }

[Важные отличия Show от ShowDialog]

1. Show() запускает отображение обычного окна, а ShowDialog() отображает модальное окно. Отличия обычного окна от модального известны — обычное окно равноправно со всеми окнами приложения, а модальное окно блокирует все остальные окна приложения, пока не будет закрыто это модальное окно.

2. Если после вызова Show() пользователь закроет вызванное окно, то повторно вызвать Show() не получится, так как объект окна будет уничтожен, и его надо будет создавать заново. Т. е. Использование Show() всегда должно быть по такой схеме: создание экземпляра класса окна (), Show(), закрытие окна. При каждом вызове Show() экземпляр класса окна нужно создавать заново в коде приложения.

3. ShowDialog() работает по другому: после закрытия пользователем окна (в отличие от Show()) экземпляр класса окна не будет уничтожен, поэтому не нужно перед каждым новым вызовом ShowDialog создавать экземпляр класса. Этот экземпляр класса может быть создан только один раз при старте приложения (например, в функции Main модуля Program.cs).

4. Свойства модального окна нужно менять в самом классе этого окна, а не из классов других окон, так как действие кода из другого класса не будет производить никакого эффекта на модальное окно. Например, поменять свойства Top и Left модального окна, влияющие на его положение, из модулей других окон не получится.

[Ссылки]

1. C#: часто задаваемые вопросы (FAQ).

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Acer aspire 3 не видит жесткий диск при установке windows 10
  • Как сделать диск d по умолчанию на windows 10
  • Windows time display change
  • Как полностью удалить профиль пользователя в windows 10
  • Как на неактивированной windows 10 настроить персонализацию