C#

Как создать окно в C#: WinForms и WPF

Чтобы создать окно в C#, нужен проект для графического интерфейса: Windows Forms App или WPF. В консольном проекте окно само не появится. В WinForms окно называется Form, в WPF — Window. Для первого учебного примера проще начать с WinForms: добавить вторую форму и открыть ее кнопкой

Создайте WinForms-проект

В Visual Studio выберите:

  1. Язык C#.
  2. Создайте проект и откройте дизайнер формы.

Если вы используете старый урок, может встретиться шаблон Windows Forms App (.NET Framework). Для новых проектов чаще подходит современный Windows Forms App

Добавьте второе окно

  1. Нажмите правой кнопкой по проекту.
  2. Выберите Add.
  3. Выберите Form (Windows Forms).
  4. Назовите файл SecondForm.cs.

После этого в проекте появится второй класс формы

Откройте окно кнопкой

На главной форме добавьте кнопку и напишите:

private void openButton_Click(object sender, EventArgs e)
{
    SecondForm window = new SecondForm();
    window.Show();
}

Show() открывает новое окно и позволяет работать с главной формой дальше

Show и ShowDialog

Если окно должно быть диалогом, используйте ShowDialog():

private void settingsButton_Click(object sender, EventArgs e)
{
    using SecondForm window = new SecondForm();
    window.ShowDialog();
}

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

Как не открыть десять одинаковых окон

Иногда пользователь нажимает кнопку несколько раз, и приложение открывает много копий одного окна. Если это не нужно, храните ссылку на открытое окно:

private SecondForm? _secondForm;

private void openButton_Click(object sender, EventArgs e)
{
    if (_secondForm == null || _secondForm.IsDisposed)
    {
        _secondForm = new SecondForm();
        _secondForm.Show();
    }
    else
    {
        _secondForm.Focus();
    }
}

Так повторный клик переводит фокус на уже открытое окно

Пример для WPF

В WPF второе окно создается как Window. Пример:

private void OpenButton_Click(object sender, RoutedEventArgs e)
{
    SecondWindow window = new SecondWindow();
    window.Show();
}

Идея похожая: создаем экземпляр окна и вызываем Show(). Отличаются файлы, разметка и модель интерфейса: в WPF используется XAML, а в WinForms — дизайнер форм и контролы

Как передать данные в окно

Часто окно нужно открыть с текстом или объектом:

SecondForm window = new SecondForm("Новый заказ");
window.Show();

Тогда в SecondForm создают конструктор с параметром и сохраняют значение в поле или сразу выводят его в Label

Если окно должно не только получить данные, но и вернуть их обратно, не смешивайте оба сценария в одном обработчике. Для простого возврата используйте ShowDialog() и публичное свойство результата. Для постоянного обмена между окнами лучше передать ссылку, сервис или событие. Так код остается читаемым: понятно, окно просто открывается, возвращает результат или живет как отдельная часть интерфейса

Еще один практический момент — имя файла. Form2 годится для первого урока, но в рабочем проекте лучше SettingsForm, OrderForm, ProductEditForm. Через неделю такие имена сэкономят больше времени, чем кажется

Частые ошибки

Первая ошибка — создавать окно в Console App и ждать дизайнер формы. Вторая — забыть добавить новую форму в проект. Третья — открыть форму через Show(), хотя нужен модальный диалог. Четвертая — каждый раз создавать новое окно, хотя нужно обновить уже открытое. Пятая — писать код в файле дизайнера вместо файла формы

Мини-задача: создайте главное окно с кнопкой «Открыть». По клику открывайте второе окно через Show(). Затем замените Show() на ShowDialog() и проверьте разницу в поведении

Что почитать дальше по C#

Источники: Microsoft WinForms, Form.Show, WPF windows

Что почитать дальше по C#

Если нужен общий маршрут по теме, откройте рубрику C#. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x