Окно в окне windows forms

Доброго времени суток. Столкнулся с проблемой. Работаю с Windows Forms в VS 2017 на C#. Хочу сделать окно, которое по нажатию кнопки будет открывать другое окно (form2, так я предполагал). Попробовал. Чтобы вторая форма открывалась в границах первой и в качестве дочерней, вычитал про функции MdiParent и IsMdiParent. В параметрах первой формы поставил значение true для IsMdiParent (родительская форма). С виду вроде работает, но при указании параметра родителя фон становится серым и не изменяется другими параметрами (тот же ColorBack отображает выбранный цвет пока VS инициализирует код, далее возвращается на серый) https://imgur.com/a/LLCtSMa
Изначально нужна была просто область, или динамическая, которая бы располагалась внутри формы со своим набором элементов: текстбоксов, баттонов, и т.п.

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

        private void Form1_Load(object sender, EventArgs e)
        {
            
            IsMdiParent = true; // Здесь выдает исключение, поэтому организовал через свойства формы.

            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;

            Form2 s = new Form2();
            s.MdiParent = this;
            s.Show();
        }
    }

Нужно сделать окно, которое при нажатии на кнопку будет открываться второе окно (для добавления нового файла). Допустим будет кнопка «добавить» при нажатии будет высвечиваться\открываться второе окно, в котором нужно будет заполнить несколько текстовых блоков, и при нажатии сохранить, всё это сохраниться в тхт файле. В общем, просто о том как создать второе окно в виндовс форм. Что-то вроде диалогового окна с кнопкой.

MSDN.WhiteKnight's user avatar

задан 4 фев 2018 в 18:42

LORD's user avatar

2

Создаете новую форму, добавляете туда все, что вам нужно, далее в главной форме на кнопку «добавить» пишите :

Form2 frm2 = new Form2(); //где Form2 - название вашей формы
frm2.Show();

ответ дан 4 фев 2018 в 18:58

Lolidze's user avatar

LolidzeLolidze

1,3701 золотой знак12 серебряных знаков26 бронзовых знаков

1

1 / 1 / 1

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

Сообщений: 84

1

20.04.2011, 16:04. Показов 27926. Ответов 13


Студворк — интернет-сервис помощи студентам

Как

внутри

окна Form 1 открыть окно Form 2 т.е. как бы обновить form 1?



0



dzjundzja88

288 / 233 / 33

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

Сообщений: 435

20.04.2011, 16:56

2

Обнови Form1 следующим образом

C#
1
            this.Refresh();



1



MichaelPozhinat

1 / 1 / 1

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

Сообщений: 84

20.04.2011, 17:06

 [ТС]

3

Цитата
Сообщение от dzjundzja88
Посмотреть сообщение

Обнови Form1 следующим образом

C#
1
            this.Refresh();

А как открыть внутри окна Form 1 Form 2?



0



288 / 233 / 33

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

Сообщений: 435

20.04.2011, 17:13

4

Что значит внутри? Опиши подробно что нужно сделать. По этому никто тебе и не отвечает, так как не понятна постановка задачи. Нужно чтобы Form2 была дочерней формой Form1, то есть не могля выйти за границы Form1? Или чтобы Form2 закрывала собой Form1? Или просто чтобы открывалась Form2 по нажатию кнопки на Form1?



2



1 / 1 / 1

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

Сообщений: 84

20.04.2011, 18:16

 [ТС]

5

Цитата
Сообщение от dzjundzja88
Посмотреть сообщение

Что значит внутри? Опиши подробно что нужно сделать. По этому никто тебе и не отвечает, так как не понятна постановка задачи. Нужно чтобы Form2 была дочерней формой Form1, то есть не могля выйти за границы Form1? Или чтобы Form2 закрывала собой Form1? Или просто чтобы открывалась Form2 по нажатию кнопки на Form1?

Нужно чтобы Form2 была дочерней формой Form1, то есть не могля выйти за границы Form1



0



288 / 233 / 33

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

Сообщений: 435

20.04.2011, 18:47

6



1



1 / 1 / 1

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

Сообщений: 84

20.04.2011, 19:01

 [ТС]

7

Цитата
Сообщение от dzjundzja88
Посмотреть сообщение

Почитал, попробывал не выходит: Form 2 всё равно открывается в новом окне, вместо того чтобы открыться в рамках Form 1



0



288 / 233 / 33

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

Сообщений: 435

20.04.2011, 19:03

8

Покажи весь код и тебе кто-то скажет где ошибка



1



zelen

389 / 304 / 67

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

Сообщений: 802

20.04.2011, 19:27

9

C#
1
2
3
Form1 child = new Form1();
child.MdiParent = this;
child.Show()

ссылку не смотрел, но думаю не показывается потому что у главной формы параметр

IsMdiContainer

должен стоять в

true



1



MichaelPozhinat

1 / 1 / 1

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

Сообщений: 84

20.04.2011, 20:35

 [ТС]

10

Цитата
Сообщение от zelen
Посмотреть сообщение

C#
1
2
3
Form1 child = new Form1();
child.MdiParent = this;
child.Show()

ссылку не смотрел, но думаю не показывается потому что у главной формы параметр

IsMdiContainer

должен стоять в

true

Спасибо всё получилось!



0



blackswan

14 / 14 / 0

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

Сообщений: 61

28.04.2011, 11:14

11

мне нужно создать модальное окно, но чтобы оно было в том же контексте, что и главное окно
если как дочернее через MDI, то такой вариант не подходит. В коде ниже вываливается ошибка:
MainForm.IsMDIContainer установлен в true

C#
1
2
3
4
5
6
private void Button1_Click(object sender, EventArgs e)
        {
Dlg = new ModalForm();
Dlg.MdiParent = this;
Dlg.ShowDialog();
}

«Form that is not a top-level form cannot be displayed as a modal dialog box. Remove the form from any parent form before calling showDialog.»
т.е. модальное не может быть дочерним в MDI. Если сделать просто Show, то окно не появляется, возможно потому что ему нет места на главной форме или прячется, в любом случае это не подходит, нужно модельное.



0



14 / 14 / 0

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

Сообщений: 61

10.05.2011, 12:57

12

Есть решение?



0



19 / 19 / 2

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

Сообщений: 367

17.02.2013, 19:37

13

Хм интересно, давно интересовал вопрос сейчас попробую сэксперементировать)

Добавлено через 2 часа 47 минут
О класно все праверил действительно работает



0



-5 / 5 / 1

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

Сообщений: 503

23.12.2013, 20:45

14

в главном проекте есть еще 3 проекта и у каждого названия форм Form1() единственное разные именя самих проектов, вот как открыть окно формы в нужном проекте



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

23.12.2013, 20:45

14

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

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

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

Второе окно можно открыть по запросу пользователя, например, при нажатии кнопки или выборе определенного пункта меню. Для этого необходимо обработать соответствующее событие и создать новый экземпляр второго окна. После этого можно отобразить второе окно, вызвав метод Show() или ShowDialog().

Второе окно может быть закрыто вручную пользователем или по завершении определенной операции. Для закрытия окна можно использовать метод Close() или свойство DialogResult в случае использования метода ShowDialog().

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

Содержание

  1. Обзор Windows Forms
  2. Работа с элементами управления
  3. Создание формы второго окна
  4. Отображение второго окна
  5. Закрытие второго окна
  6. Вопрос-ответ
  7. Как создать второе окно в Windows Forms?
  8. Как добавить элементы управления на второе окно?
  9. Как открыть второе окно в приложении?
  10. Можно ли передавать данные между первым и вторым окном?

Обзор Windows Forms

Windows Forms представляет собой библиотеку классов для разработки приложений с пользовательским интерфейсом для операционной системы Windows. Она была разработана компанией Microsoft и является частью .NET Framework. Windows Forms обеспечивает удобный способ создания графических интерфейсов пользователя на основе стандартных элементов управления.

Вот несколько основных компонентов Windows Forms:

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

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

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

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

Работа с элементами управления

В Windows Forms для создания пользовательского интерфейса используются различные элементы управления (controls), которые позволяют взаимодействовать с программой. Некоторые из основных элементов управления:

  • Label (Метка) — представляет собой надпись, которая используется для отображения текста на форме. Может быть статичной или динамической (изменяющей свое содержимое в процессе работы программы).

  • Button (Кнопка) — элемент, который позволяет выполнять определенные действия при нажатии на него. Кнопка может иметь текст, иконку или оба элемента одновременно.

  • TextBox (Текстовое поле) — служит для ввода и отображения текста. В TextBox можно вводить одну строку или многострочный текст (если установлено свойство Multiline).

  • ComboBox (Выпадающий список) — позволяет пользователю выбрать одну из предопределенных опций из выпадающего списка. ComboBox может быть связан с набором данных (например, списком значений из базы данных) или заполняться статическими значениями.

  • CheckBox (Флажок) — элемент, позволяющий пользователю выбрать или снять отметку на опцию. Обычно используется для активации или деактивации определенных функций.

  • RadioButton (Радиокнопка) — позволяет пользователю выбрать одну опцию из группы опций. Радиокнопки работают вместе, то есть выбор одной кнопки автоматически отменяет выбор других кнопок в группе.

  • ListBox (Список) — позволяет выбирать одну или несколько опций из списка. ListBox может быть одно- или множественным выбором.

  • DataGridView (Таблица с данными) — элемент, предназначенный для отображения и редактирования таблицы данных. Позволяет отображать данные из источника данных (например, базы данных) и осуществлять сортировку, фильтрацию и поиск.

Каждый элемент управления имеет свои свойства, события и методы, которые позволяют настроить его внешний вид, реализовать функциональность и обработку событий. Свойства элементов управления позволяют устанавливать размер, расположение, цвет, текст и другие атрибуты. События позволяют реагировать на действия пользователя (например, нажатия на кнопку). Методы элементов управления позволяют программно изменять их состояние (например, очищать текстовое поле или выбирать опцию в выпадающем списке).

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

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

Создание формы второго окна

Для создания второго окна в приложении на Windows Forms необходимо выполнить следующие действия:

  1. Создайте новый класс, который будет представлять форму второго окна.
  2. В классе второго окна определите необходимые элементы управления, такие как кнопки, текстовые поля и т.д., используя инструменты редактора форм Visual Studio.
  3. Добавьте обработчики событий элементов управления, если это необходимо.
  4. В классе первого окна создайте экземпляр класса второго окна.
  5. Отобразите второе окно с помощью метода Show() или ShowDialog(), в зависимости от того, нужно ли получить результат работы второго окна.

Пример создания формы второго окна:

  1. Создайте новый файл с расширением .cs и назовите его, например, SecondForm.cs.
  2. Откройте файл SecondForm.cs в редакторе Visual Studio.
  3. Определите класс SecondForm:
  4. public class SecondForm : Form
    

    {

    // Определение элементов управления и обработчиков событий

    }

  5. Добавьте необходимые элементы управления и обработчики событий в класс SecondForm.
  6. public class SecondForm : Form
    

    {

    private Button closeButton;

    public SecondForm()

    {

    closeButton = new Button();

    closeButton.Text = "Закрыть";

    closeButton.Click += CloseButton_Click;

    // Добавление элементов управления на форму

    Controls.Add(closeButton);

    }

    private void CloseButton_Click(object sender, EventArgs e)

    {

    Close();

    }

    }

  7. В классе первого окна создайте экземпляр класса SecondForm и отобразите его:
  8. public partial class MainForm : Form
    

    {

    private Button openSecondFormButton;

    public MainForm()

    {

    openSecondFormButton = new Button();

    openSecondFormButton.Text = "Открыть второе окно";

    openSecondFormButton.Click += OpenSecondFormButton_Click;

    // Добавление элементов управления на форму

    Controls.Add(openSecondFormButton);

    }

    private void OpenSecondFormButton_Click(object sender, EventArgs e)

    {

    SecondForm secondForm = new SecondForm();

    // Открытие второго окна

    secondForm.ShowDialog();

    // Или использование метода secondForm.Show() для отображения второго окна без блокировки первого окна

    }

    }

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

Отображение второго окна

Чтобы отобразить второе окно в приложении Windows Forms, вам понадобится создать новый экземпляр формы и вызвать метод Show() или ShowDialog(). Вот пример кода:

SecondForm secondForm = new SecondForm();

secondForm.Show();

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

SecondForm secondForm = new SecondForm();

secondForm.ShowDialog();

Метод ShowDialog() создаст модальное окно, которое останавливает выполнение основного окна, пока оно открыто. Это может быть полезно, если вы хотите, чтобы пользователь закрыл второе окно, прежде чем продолжить работу с основным окном.

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

// В первом окне:

string message = "Hello from the first form!";

SecondForm secondForm = new SecondForm(message);

secondForm.ShowDialog();

// Во втором окне:

public SecondForm(string message)

{

InitializeComponent();

label1.Text = message;

}

В этом примере строка «Hello from the first form!» передается в конструктор второй формы и отображается на метке label1 с помощью свойства Text.

И наконец, если вы хотите закрыть второе окно из кода основной формы, вы можете вызвать метод Close() или установить свойство Visible на false. Вот пример:

// В основном окне:

secondForm.Close();

или

secondForm.Visible = false;

В этом примере вызывается метод Close(), который закрывает второе окно. Вы также можете установить свойство Visible на false для скрытия окна.

Закрытие второго окна

Если вам необходимо закрыть второе окно в своем приложении на Windows Forms, вы можете воспользоваться методом Close(), который доступен для объектов класса Form.

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


public class MainForm : Form

{

private SecondaryForm secondaryForm; // объявляем переменную для второй формы

public MainForm()

{

InitializeComponent();

secondaryForm = new SecondaryForm(this); // создаем экземпляр второй формы и передаем ссылку на главное окно

}

private void OpenSecondFormButton_Click(object sender, EventArgs e)

{

secondaryForm.Show(); // открываем второе окно

}

private void CloseSecondFormButton_Click(object sender, EventArgs e)

{

secondaryForm.Close(); // закрываем второе окно

}

}

public class SecondaryForm : Form

{

public SecondaryForm(MainForm mainForm)

{

InitializeComponent();

this.mainForm = mainForm; // сохраняем ссылку на главное окно в переменной класса второй формы

}

private MainForm mainForm;

// ...

}

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

Если второе окно было открыто с помощью метода ShowDialog() вместо Show(), тогда применяется метод Close() для закрытия окна:


private void CloseSecondFormButton_Click(object sender, EventArgs e)

{

secondaryForm.Close(); // закрываем второе окно

}

Второе окно будет закрыто и возвратит результат DialogResult.Cancel или любой другой результат, который вы установили при вызове метода ShowDialog().

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

Как создать второе окно в Windows Forms?

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

Как добавить элементы управления на второе окно?

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

Как открыть второе окно в приложении?

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

Можно ли передавать данные между первым и вторым окном?

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

Как создать форму внутри панели другой формы? C# Windows Forms

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

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

Шаг 1: Создание нового проекта Windows Forms

В первую очередь, создадим новый проект Windows Forms в Visual Studio. Для этого выполним следующие шаги:

1. Запустите Visual Studio и выберите «Создать новый проект».
2. В окне «Создание проекта» выберите шаблон «Windows Forms App (.NET Framework)» и нажмите «Далее».
3. Введите имя проекта и выберите место сохранения проекта на вашем компьютере.
4. Нажмите кнопку «Создать», чтобы создать новый проект.

Шаг 2: Добавление панели на форму

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

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

Шаг 3: Создание новой формы

Теперь создадим новую форму, которую мы хотим поместить внутри панели. Для этого выполним следующие шаги:

1. Щелкните правой кнопкой мыши на проекте в «Обозревателе решений» и выберите «Добавить» -> «Новый элемент».
2. В появившемся окне выберите шаблон «Окно Windows Forms» и введите имя новой формы. Нажмите кнопку «Добавить».
3. Новая форма будет создана и открыта в дизайнере.

Шаг 4: Задание размера и стиля новой формы

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

1. В дизайнере новой формы, используйте свойство «ClientSize» для изменения размера формы таким образом, чтобы она соответствовала размеру и расположению панели, в которой она будет размещена.
2. Также по желанию, можно изменить стиль окна, задав свойство «FormBorderStyle» с нужным значением (например, «FixedSingle» для одиночной рамки).

Шаг 5: Помещение новой формы внутри панели

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

1. Вернемся к дизайнеру главной формы, где мы ранее добавили панель.
2. Дважды щелкните на панели, чтобы открыть событие «Load» для панели.
3. В методе обработчика события «Load» добавим следующий код:

private void panel1_Load(object sender, EventArgs e)
{
// Создаем экземпляр новой формы
Form2 form2 = new Form2();

// Делаем форму ребенком панели
form2.TopLevel = false;
form2.Parent = panel1;

// Задаем размер и отображаем форму
form2.Dock = DockStyle.Fill;
form2.Show();
}

В этом коде мы создаем экземпляр новой формы, делаем ее ребенком панели (устанавливая свойство «TopLevel» в значение «false» и свойство «Parent» в панель), а затем задаем размер формы, используя свойство «DockStyle.Fill», чтобы она заполнила всю панель. В конце мы вызываем метод «Show()» для отображения формы.

Шаг 6: Запуск приложения

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

1. Нажмите кнопку «F5» или выберите пункт меню «Отладка» -> «Запуск отладки», чтобы запустить приложение.
2. Вы должны увидеть главную форму с панелью, а внутри нее — новую форму.

Заключение

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

  • Окно безопасность windows не открывается
  • Ограниченный доступ wifi на ноутбуке windows 7 при раздаче с телефона
  • Окна документов в windows содержат ярлыки документов
  • Окно безопасность windows как открыть
  • Ограниченный доступ wifi на ноутбуке windows 7 как исправить