C#

Как добавить форму в Visual Studio для C# Windows Forms

В C# форму в Visual Studio добавляют в проект Windows Forms через меню Add -> New Item -> Windows Form. После этого Visual Studio создаст новый файл формы, например SettingsForm.cs, и ее можно открыть из основной формы через Show() или ShowDialog(). Важно: это работает именно в Windows Forms App, а не в обычном Console App

Проверьте тип проекта

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

Если шаблона Windows Forms нет, установите в Visual Studio workload .NET desktop development

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

Порядок действий:

  1. В Solution Explorer нажмите правой кнопкой по проекту.
  2. Выберите Add.
  3. Выберите New Item.
  4. Найдите Windows Form.
  5. Назовите файл, например SettingsForm.cs.
  6. Нажмите Add.

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

Как открыть вторую форму

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

private void openSettingsButton_Click(object sender, EventArgs e)
{
    SettingsForm form = new SettingsForm();
    form.Show();
}

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

private void openSettingsButton_Click(object sender, EventArgs e)
{
    SettingsForm form = new SettingsForm();
    form.ShowDialog();
}

Для настроек, выбора значения или маленького диалога часто подходит ShowDialog()

Как передать данные во вторую форму

Самый простой способ — добавить конструктор

public partial class SettingsForm : Form
{
    public SettingsForm(string userName)
    {
        InitializeComponent();
        Text = $"Настройки: {userName}";
    }
}

Открытие:

private void openSettingsButton_Click(object sender, EventArgs e)
{
    SettingsForm form = new SettingsForm("Динар");
    form.ShowDialog();
}

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

Как получить результат обратно

Для простого сценария можно создать публичное свойство во второй форме:

public string SelectedValue { get; private set; } = "";

Перед закрытием формы запишите значение:

SelectedValue = textBox1.Text;
DialogResult = DialogResult.OK;
Close();

В основной форме:

SettingsForm form = new SettingsForm();

if (form.ShowDialog() == DialogResult.OK)
{
    label1.Text = form.SelectedValue;
}

Так связь между формами остается явной: основная форма открывает диалог и забирает результат

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

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

Мини-задача: создайте MainForm и SettingsForm. На основной форме сделайте кнопку «Настройки». Во второй форме добавьте TextBox и кнопку OK. После закрытия диалога выведите введенный текст на основной форме

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

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

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

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

Настройки cookie

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