Как закрыть форму в c при нажатии кнопки

от admin

Как закрыть форму в c при нажатии кнопки

По умолчанию все формы в Windows Forms являются прямоугольными. Однако мы можем создавать и непрямоугольные произвольные формы. Для этого используется свойство Region . В качестве значения оно принимает объект одноименного класса Region.

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

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

Итак, перейдем к коду формы и изменим его следующим образом:

Создание области формы происходит в обработчике события Form1_Load. Для создания области используется графический путь — объект класса System.Drawing.Drawing2D.GraphicsPath , в который добавляется эллипс. Графический путь позволяет создать фигуру любой формы, поэтому, если мы захотим форму в виде морской звезды, то нам просто надо должным образом настроить используемый графический путь.

Для закрытия формы в обработчике события нажатия кнопки button1_Click форма закрывается программным образом: this.Close()

Для перемещения формы обрабатываются два события формы — событие нажатия кнопки мыши и событие перемещения указателя мыши.

How to close form

Ok, so a Windows Forms class, WindowSettings, and the form has a «Cancel»-button. When the user clicks the button, the dialog DialogSettingsCancel will pop-up up and ask the user if he is sure he wants to perform the action. The dialog has 2 buttons, a «Yes»-button and a «No»-button. If the user clicks the «Yes»-button, I want both DialogSettingsCancel and WindowSettings to be closed.

My button_Click event handler in DialogSettingsCancel:

When I run my application, and go to the settings form, and click the «Cancel»-button, and then click the «Yes»-button, only DialogSettingsCancel closes without closing WindowSettings.

Как закрыть форму в c при нажатии кнопки

Gray Pipe

Лучший отвечающий

Вопрос

Имеется многооконное приложение. При запуске вызывается что-то на-подобии "Окна входа", где пользователь вводит, к примеру, логин и пароль. При наличии в базе пары введенный логин-пароль "Окно входа" закрывается и открывается "Основное окно", из которого последовательно вызываются другие окна, а оно закрывается. Понятно, что с привязкой формы к приложению это все организовать не получится(точнее сделать то можно, меняя у форм свойство Visible, но это будет "жрать неимоверное количество памяти", а это не очень хорошо), поэтому в файле "Program.cs" пишу следующий код:

Затем в нужном месте просто пишу что-то на-подобии:

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

Пытался идентифицировать каким именно способом закрылась форма: с помощью кода

или по нажатию пользователя на "крестик". Но оба этих события передают в метод Form_Closing один и тот же аргумент FormClosingEventArgs, который в поле CloseReason содержит значение UserClosing, т.е. таким макаром не отследить. Подумал: "может создать некоторую переменную типа Boolean, значение в которой изменять по нажатии на мою клавишу для закрытия и в зависимости от её значения завершать процесс приложения или нет", но эта переменная должна быть глобальной, а использование таких переменных также не очень хорошо. В итоге: я встал в тупик.

Читать:
Как включить remotefx на windows 10

Может кто-то подскажет каким образом можно корректно реализовать многооконное приложение, чтобы не возникало вышеописанных проблем.

Cкрытие и закрытие форм

Чтобы скрыть форму вызовите метод Hide.

В следующем примере кода показан способ скрытия формы frm1.

glob.frm1.Hide();

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

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

private void Form2_FormClosed(object sender, FormClosedEventArgs e)

glob.frm1.Show();

Чтобы закрыть форму вызовите метод Close.

В следующем примере кода показан способ закрытия формы frm1.

glob.frm1.Close();

Примечание1. При закрытии начальной формы будет закрыто приложение.

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

glob.frm2 = new Form2();

glob.frm2.Show();

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

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

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

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

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

Чтобы нарисовать элемент управления в форме, выполните следующие действия.

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

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

Элемент управления добавляется на форму в указанное место с указанными размерами.

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

Чтобы перетащить элемент управления в форму, выполните следующие действия.

В панели элементов щелкните требуемый элемент управления и перетащите его в форму.

Элемент добавляется в форму в указанное место с размером по умолчанию.

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

Можно также добавлять элементы управления на форму динамически во время выполнения. В приведенном ниже примере элемент управления TextBox (текстовое поле) будет добавлен на форму после щелчка элемента управления Button (кнопка).

Примечание. Для следующей процедуры требуется форма с уже расположенным в ней элементом управления Кнопка Button1 .

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

Похожие статьи