-
Use the
Form.Show()
Method to Open a New Form Using a Button inC#
-
Use the
Form.ShowDialog()
Method to Open a New Form Using a Button inC#
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:
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:
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.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
Она выглядит вот так:
-
Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт
- 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 theShowDialog()
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 theShowDialog()
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: Откройте проект в Microsoft Visual Studio
- Шаг 2: Добавьте новую форму
- Шаг 3: Создайте кнопку «Открыть новое окно»
- Шаг 4: Напишите код для открытия нового окна
- Вопрос-ответ
Шаг 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, нам необходимо создать кнопку, при нажатии на которую будет происходить открытие нового окна. В данном шаге мы добавим эту кнопку на форму.
- Откройте файл формы, на которой вы хотите добавить кнопку. Обычно это файл с расширением
.cs
. - Разместите курсор в месте, где вы хотите разместить кнопку.
- В контейнере элементов управления (обычно это панель инструментов «Разметка» или «Компоненты», находящаяся справа) найдите кнопку, и перетащите ее на нужное место на форме.
- Измените свойства кнопки при необходимости. Например, вы можете задать текст кнопки, стиль, размеры и др.
Теперь у вас есть кнопка, при нажатии на которую будет открываться новое окно. В следующем шаге мы научимся добавлять код, который будет отвечать за открытие нового окна при нажатии на кнопку.
Шаг 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 |
|||
вы это имели ввиду? 1 |
kirill29 2095 / 1260 / 171 Регистрация: 01.02.2009 Сообщений: 2,842 |
||||
22.10.2009, 20:27 |
3 |
|||
Выход из приложения можно реализовать и так:
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 минут
Правильно или нет — не знаю, но работает. Может можно как-то лучше написать. 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).