Kotyara0live 33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
||||
1 |
||||
Как закрыть форму?18.09.2017, 17:10. Показов 63384. Ответов 12 Метки нет (Все метки)
Привет, вот немного освоил основы и перешел к forms , может кто подсказать как сделать так что бы после успешной операции пропадали/закрывались и вызывали новые forms
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
18.09.2017, 17:10 |
Ответы с готовыми решениями: Закрыть 2 форму при этом не закрыть весь проект Как закрыть форму? Как закрыть форму Как закрыть форму 12 |
student203 4 / 4 / 3 Регистрация: 25.03.2017 Сообщений: 180 Записей в блоге: 2 |
||||||||||||
18.09.2017, 17:58 |
2 |
|||||||||||
закрывает программу …
закрывает окно
присваевает и открывает новое окно
2 |
33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
|
18.09.2017, 18:19 [ТС] |
3 |
вроде объяснил да вроде даже что то понял :Р
0 |
4 / 4 / 3 Регистрация: 25.03.2017 Сообщений: 180 Записей в блоге: 2 |
|
18.09.2017, 18:22 |
4 |
да нет) просто создаешь второе окно , оно не портит дизайн первого ..
0 |
Kotyara0live 33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
||||
18.09.2017, 18:30 [ТС] |
5 |
|||
что то не работает
0 |
student203 4 / 4 / 3 Регистрация: 25.03.2017 Сообщений: 180 Записей в блоге: 2 |
||||
18.09.2017, 18:34 |
6 |
|||
Миниатюры
0 |
33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
|
18.09.2017, 18:47 [ТС] |
7 |
разобрался
this.Close();
0 |
student203 4 / 4 / 3 Регистрация: 25.03.2017 Сообщений: 180 Записей в блоге: 2 |
||||
18.09.2017, 19:42 |
8 |
|||
вот так
0 |
Kotyara0live 33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
||||
18.09.2017, 21:09 [ТС] |
9 |
|||
неа
0 |
4 / 4 / 3 Регистрация: 25.03.2017 Сообщений: 180 Записей в блоге: 2 |
|
18.09.2017, 23:04 |
10 |
у меня все работает … странно , скинь свой код
0 |
Kotyara0live 33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
||||
19.09.2017, 11:32 [ТС] |
11 |
|||
у меня все работает … странно , скинь свой код
0 |
Даценд 5858 / 4735 / 2940 Регистрация: 20.04.2015 Сообщений: 8,361 |
||||
19.09.2017, 12:22 |
12 |
|||
Kotyara0live,
2-я форма должна вернуть DialogResult.OK, если правильно введен пароль.
1 |
33 / 27 / 27 Регистрация: 23.02.2016 Сообщений: 366 |
|
19.09.2017, 14:10 [ТС] |
13 |
2-я форма должна вернуть DialogResult.OK, если правильно введен пароль. все работает )
0 |
You need the actual instance of the WindowSettings
that’s open, not a new one.
Currently, you are creating a new instance of WindowSettings
and calling Close
on that. That doesn’t do anything because that new instance never has been shown.
Instead, when showing DialogSettingsCancel
set the current instance of WindowSettings
as the parent.
Something like this:
In WindowSettings
:
private void showDialogSettings_Click(object sender, EventArgs e)
{
var dialogSettingsCancel = new DialogSettingsCancel();
dialogSettingsCancel.OwningWindowSettings = this;
dialogSettingsCancel.Show();
}
In DialogSettingsCancel
:
public WindowSettings OwningWindowSettings { get; set; }
private void button1_Click(object sender, EventArgs e)
{
this.Close();
if(OwningWindowSettings != null)
OwningWindowSettings.Close();
}
This approach takes into account, that a DialogSettingsCancel
could potentially be opened without a WindowsSettings
as parent.
If the two are always connected, you should instead use a constructor parameter:
In WindowSettings
:
private void showDialogSettings_Click(object sender, EventArgs e)
{
var dialogSettingsCancel = new DialogSettingsCancel(this);
dialogSettingsCancel.Show();
}
In DialogSettingsCancel
:
WindowSettings _owningWindowSettings;
public DialogSettingsCancel(WindowSettings owningWindowSettings)
{
if(owningWindowSettings == null)
throw new ArgumentNullException("owningWindowSettings");
_owningWindowSettings = owningWindowSettings;
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
_owningWindowSettings.Close();
}
Стандартные способы:
- кликнуть в правом верхнем углу красную кнопку «крестик»
- комбинация клавиш Alt+F4
- кликнуть правой кнопкой мыши в верхнем левом углу, выбрать из контекстного меню «Закрыть»
Не стандартные способы:
- с помощью красной кнопки «крестик» с использованием окна сообщения
- через созданную кнопку
- через созданную кнопку с использованием окна сообщения
с помощью красной кнопки «крестик» с использованием окна сообщения
Пользователь пытается закрыть программу стандартным способом, кликает на верхнюю правую кнопку «крестик», нажимает комбинацию клавиш Alt+F4 или в левом верхнем углу вызывает контекстное меню формы. Но программа сразу не закрывается, а появляется окно сообщения, в котором нужно подтвердить решение закрытия.
Событие FormClosingEventArgs принимает параметр «е». Этот параметр имеет свойство Cancel. Если установить его в false, форма закроется, если в true — останется открытой.
Скрыть
Показать
Копировать
Form1.cs
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
_0006 {
-
public
partial
class
Form1 : Form {
-
public
Form1() {
-
InitializeComponent();
-
}
-
private
void
Form1_FormClosing(
object
sender, FormClosingEventArgs e) {
-
DialogResult dialog = MessageBox.Show(
-
"Вы действительно хотите выйти из программы?"
,
-
"Завершение программы"
,
-
MessageBoxButtons.YesNo,
-
MessageBoxIcon.Warning
-
);
-
if
(dialog == DialogResult.Yes) {
-
e.Cancel =
false
;
-
}
-
else
{
-
e.Cancel =
true
;
-
}
-
}
-
}
}
через созданную кнопку
Метод Close() в родительской форме закрывает все приложение.
Метод Close() в дочерних формах закрывает только дочернюю форму.
Метод Application.Exit() закрывает приложение, если вызывается как из родительской формы, так и из дочерних форм.
Скрыть
Показать
Копировать
Form1.cs
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
_0007 {
-
public
partial
class
Form1 : Form {
-
public
Form1() {
-
InitializeComponent();
-
}
-
private
void
button1_Click(
object
sender, EventArgs e) {
-
this
.Close();
-
}
-
}
}
через созданную кнопку с использованием окна сообщения
В этом примере мы добавим кнопку на форму, которая будет закрывать приложение. Но при нажатии на кнопку будет вызвано окно сообщений.
Скрыть
Показать
Копировать
Form1.cs
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
_0008 {
-
public
partial
class
Form1 : Form {
-
public
Form1() {
-
InitializeComponent();
-
}
-
private
void
button1_Click(
object
sender, EventArgs e) {
-
DialogResult dialog = MessageBox.Show(
-
"Вы действительно хотите выйти из программы?"
,
-
"Завершение программы"
,
-
MessageBoxButtons.YesNo,
-
MessageBoxIcon.Warning
-
);
-
if
(dialog == DialogResult.Yes) {
-
this
.Close();
-
}
-
}
-
}
}
- HowTo
- C# Howtos
- Close Form in C#
- Close Form With the
Application.Exit()
Function inC#
- Close Form With the
Form.Close()
Function inC#
This tutorial will introduce the methods to close a form in C#.
Close Form With the Application.Exit()
Function in C#
The Application.Exit()
function is used to close the entire application in C#. The Application.Exit()
function informs all message loops to terminate execution and closes the application after all the message loops have terminated. We can also use the Application.Exit()
function to close a form in a Windows Form application if our application only consists of one form. See the following example.
using System;
using System.Windows.Forms;
namespace close_form
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
In the above code, we closed the form in our Windows Form application that only consists of one form with the Application.Exit()
function in C#. The only drawback with this approach is that the Application.Exit()
function exits the whole application. So, if the application contains more than one form, all the forms will be closed.
Close Form With the Form.Close()
Function in C#
The Form.Close()
function is used to close a Form in a Windows Form application in C#. We can use the Form.Close()
function inside the button click event to close the specified form by clicking a button. See the following example.
using System;
using System.Windows.Forms;
namespace close_form
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
In the above code, we closed the form in our Windows Form application that only consists of one form with the Form.Close()
function in C#. Unlike the previous method, this method only closes a single Form in our application. This method can be used to close a single form in an application that consists of multiple forms.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
Related Article — Csharp GUI
Имеется многооконное приложение. При запуске вызывается что-то на-подобии «Окна входа», где пользователь вводит, к примеру, логин и пароль. При наличии в базе пары введенный логин-пароль «Окно входа» закрывается и открывается «Основное
окно», из которого последовательно вызываются другие окна, а оно закрывается. Понятно, что с привязкой формы к приложению это все организовать не получится(точнее сделать то можно, меняя у форм свойство Visible, но это будет «жрать неимоверное количество
памяти», а это не очень хорошо), поэтому в файле «Program.cs» пишу следующий код:
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 form1 = new Form1(); form1.Show(); Application.Run(); //запустить независимое от Form1 приложение }
Затем в нужном месте просто пишу что-то на-подобии:
Form2 form2 = new Form2(); //создать экземпляр типа Form2 form2.Show(); //отобразить его this.Close(); //закрыть текущую форму
При такой работе практически все работает как надо, но т.к. приложение не зависит от Form, то если пользователь сам закроет окно(не нажав на кнопку, выделенную мной для закрытия), то процесс приложения будет «висеть» в памяти, а это «не есть
гуд».
Пытался идентифицировать каким именно способом закрылась форма: с помощью кода
или по нажатию пользователя на «крестик». Но оба этих события передают в метод Form_Closing один и тот же аргумент FormClosingEventArgs, который в поле CloseReason содержит значение UserClosing, т.е. таким макаром не отследить. Подумал: «может
создать некоторую переменную типа Boolean, значение в которой изменять по нажатии на мою клавишу для закрытия и в зависимости от её значения завершать процесс приложения или нет», но эта переменная должна быть глобальной, а использование таких переменных
также не очень хорошо. В итоге: я встал в тупик…
Может кто-то подскажет каким образом можно корректно реализовать многооконное приложение, чтобы не возникало вышеописанных проблем.
Чтобы
скрыть форму вызовите
метод 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)
элемента управления и добавления самого
элемента управления.
private
void button1_Click(object sender, System.EventArgs e)
{
TextBox myText = new
TextBox();
myText.Location
= new Point(25,25);
this.Controls.Add (myText);
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
I have an exit button on a winform that I want to use to close the program. I have added the button name to the FormClosed property found in the events section of the winforms properties. I thought that’s all I had to do but when I click the button it does not close. I looked at the code and while a handler is created, there is no code inside of it. I don’t know if that is correct or not. Here is the code that was created in the Form.cs file:
private void btnExitProgram_Click(object sender, EventArgs e)
{
}
What else do I have to do?
neontapir
4,6803 gold badges37 silver badges52 bronze badges
asked Mar 6, 2012 at 15:29
2
this.Close();
Closes the form programmatically.
answered Mar 6, 2012 at 15:31
1
Remove the method, I suspect you might also need to remove it from your Form.Designer
.
Otherwise: Application.Exit();
Should work.
That’s why the designer is bad for you.
answered Mar 6, 2012 at 15:34
1
The FormClosed Event is an Event that fires when the form closes. It is not used to actually close the form. You’ll need to remove anything you’ve added there.
All you should have to do is add the following line to your button’s event handler:
this.Close();
answered Mar 6, 2012 at 15:32
Justin NiessnerJustin Niessner
240k40 gold badges405 silver badges535 bronze badges
1
We can close every window using Application.Exit();
Using this method we can close hidden windows also.
private void btnExitProgram_Click(object sender, EventArgs e)
{
Application.Exit();
}
answered Jun 1, 2017 at 9:20
Put this little code in the event of the button:
this.Close();
answered Mar 6, 2012 at 15:32
AbbasAbbas
14k6 gold badges41 silver badges71 bronze badges
0
Try this:
private void btnExitProgram_Click(object sender, EventArgs e) {
this.Close();
}
answered Mar 6, 2012 at 15:32
juergen djuergen d
199k36 gold badges286 silver badges350 bronze badges
0
Used Following Code
System.Windows.Forms.Application.Exit( )
answered Dec 9, 2020 at 18:44
In Visual Studio 2015, added this to a menu for File -> Exit and in that handler put:
this.Close();
but the IDE said ‘this’ was not necessary. Used the IDE suggestion with just Close();
and it worked.
answered Jan 13, 2016 at 17:53
Brad RogersBrad Rogers
892 silver badges12 bronze badges
If you only want to Close the form than you can use this.Close();
else if you want the whole application to be closed use Application.Exit();
answered Oct 23, 2016 at 16:48
You can also do like this:
private void button2_Click(object sender, EventArgs e)
{
System.Windows.Forms.Application.ExitThread();
}
answered Oct 4, 2019 at 6:27
I have an exit button on a winform that I want to use to close the program. I have added the button name to the FormClosed property found in the events section of the winforms properties. I thought that’s all I had to do but when I click the button it does not close. I looked at the code and while a handler is created, there is no code inside of it. I don’t know if that is correct or not. Here is the code that was created in the Form.cs file:
private void btnExitProgram_Click(object sender, EventArgs e)
{
}
What else do I have to do?
neontapir
4,6803 gold badges37 silver badges52 bronze badges
asked Mar 6, 2012 at 15:29
2
this.Close();
Closes the form programmatically.
answered Mar 6, 2012 at 15:31
1
Remove the method, I suspect you might also need to remove it from your Form.Designer
.
Otherwise: Application.Exit();
Should work.
That’s why the designer is bad for you.
answered Mar 6, 2012 at 15:34
1
The FormClosed Event is an Event that fires when the form closes. It is not used to actually close the form. You’ll need to remove anything you’ve added there.
All you should have to do is add the following line to your button’s event handler:
this.Close();
answered Mar 6, 2012 at 15:32
Justin NiessnerJustin Niessner
240k40 gold badges405 silver badges535 bronze badges
1
We can close every window using Application.Exit();
Using this method we can close hidden windows also.
private void btnExitProgram_Click(object sender, EventArgs e)
{
Application.Exit();
}
answered Jun 1, 2017 at 9:20
Put this little code in the event of the button:
this.Close();
answered Mar 6, 2012 at 15:32
AbbasAbbas
14k6 gold badges41 silver badges71 bronze badges
0
Try this:
private void btnExitProgram_Click(object sender, EventArgs e) {
this.Close();
}
answered Mar 6, 2012 at 15:32
juergen djuergen d
199k36 gold badges286 silver badges350 bronze badges
0
Used Following Code
System.Windows.Forms.Application.Exit( )
answered Dec 9, 2020 at 18:44
In Visual Studio 2015, added this to a menu for File -> Exit and in that handler put:
this.Close();
but the IDE said ‘this’ was not necessary. Used the IDE suggestion with just Close();
and it worked.
answered Jan 13, 2016 at 17:53
Brad RogersBrad Rogers
892 silver badges12 bronze badges
If you only want to Close the form than you can use this.Close();
else if you want the whole application to be closed use Application.Exit();
answered Oct 23, 2016 at 16:48
You can also do like this:
private void button2_Click(object sender, EventArgs e)
{
System.Windows.Forms.Application.ExitThread();
}
answered Oct 4, 2019 at 6:27
Создание непрямоугольных форм. Закрытие формы
Последнее обновление: 31.10.2015
По умолчанию все формы в Windows Forms являются прямоугольными. Однако мы можем создавать и непрямоугольные произвольные формы.
Для этого используется свойство Region. В качестве значения оно принимает объект одноименного класса Region.
При создании непрямоугольных форм, как правило, не используются границы формы, так как границы задаются этим объектом
Region. Чтобы убрать границы формы, надо присвоить у формы свойству FormBorderStyle
значение None
.
И еще один аспект, который надо учитывать, заключается в перемещении, закрытии, максимизации и минимизации форм. То есть в данном случае ,
как в обычной форме, мы не сможем нажать на крестик, чтобы закрыть форму, не сможем ее переместить на новое место. Поэтому нам надо
дополнительно определять для этого программную логику.
Итак, перейдем к коду формы и изменим его следующим образом:
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 Form1 : Form { Point moveStart; // точка для перемещения public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.BackColor = Color.Yellow; Button button1 = new Button { Location = new Point { X = this.Width / 3, Y = this.Height / 3 } }; button1.Text = "Закрыть"; button1.Click += button1_Click; this.Controls.Add(button1); // добавляем кнопку на форму this.Load += Form1_Load; this.MouseDown += Form1_MouseDown; this.MouseMove += Form1_MouseMove; } private void button1_Click(object sender, EventArgs e) { this.Close(); } private void Form1_Load(object sender, EventArgs e) { System.Drawing.Drawing2D.GraphicsPath myPath = new System.Drawing.Drawing2D.GraphicsPath(); // создаем эллипс с высотой и шириной формы myPath.AddEllipse(0, 0, this.Width, this.Height); // создаем с помощью элипса ту область формы, которую мы хотим видеть Region myRegion = new Region(myPath); // устанавливаем видимую область this.Region = myRegion; } private void Form1_MouseDown(object sender, MouseEventArgs e) { // если нажата левая кнопка мыши if (e.Button == MouseButtons.Left) { moveStart = new Point(e.X, e.Y); } } private void Form1_MouseMove(object sender, MouseEventArgs e) { // если нажата левая кнопка мыши if ((e.Button & MouseButtons.Left) != 0) { // получаем новую точку положения формы Point deltaPos = new Point(e.X - moveStart.X, e.Y - moveStart.Y); // устанавливаем положение формы this.Location = new Point(this.Location.X + deltaPos.X, this.Location.Y + deltaPos.Y); } } } }
Создание области формы происходит в обработчике события Form1_Load. Для создания области используется графический путь — объект класса
System.Drawing.Drawing2D.GraphicsPath
, в который добавляется эллипс. Графический путь позволяет создать фигуру любой формы,
поэтому, если мы захотим форму в виде морской звезды, то нам просто надо должным образом настроить используемый графический путь.
Для закрытия формы в обработчике события нажатия кнопки button1_Click
форма закрывается программным образом: this.Close()
Для перемещения формы обрабатываются два события формы — событие нажатия кнопки мыши и событие перемещения указателя мыши.