Как я могу получить свою оконную форму, чтобы что-то сделать, когда она закрыта.C# Windows Form: On Close Do [Process]
ответ
Обращайтесь к делу FormClosed
.
Для этого перейдите на вкладку «События» в окне «Свойства» и дважды щелкните событие FormClosed
, чтобы добавить к нему обработчик.
Затем вы можете поместить свой код в сгенерированный обработчик MyForm_FormClosed
.
Вы также можете это сделать, переопределив метод OnFormClosed
; для этого введите override onformcl
в окне кода и OnFormClosed
от IntelliSense.
Если вы хотите, чтобы предотвратить закрытие формы, обработайте событие FormClosing
и установите e.Cancel
на номер true
.
Добавить обработчик событий в событие FormClosed для вашей формы.
public class Form1
{
public Form1()
{
this.FormClosed += MyClosedHandler;
}
protected void MyClosedHandler(object sender, EventArgs e)
{
// Handle the Event here.
}
}
Это событие устарело – Ian
@Ian - Исправлено. –
У WinForms есть два события, которые вы можете посмотреть.
Первое, событие FormClosing
, происходит до того, как форма фактически закрыта. В этом случае вы можете получить доступ к любым элементам управления и переменным в классе формы. Вы также можете отменить форму закрытия, установив e.Cancel = true;
(где e
- это System.Windows.Forms.FormClosingEventArgs
, отправленный как второй аргумент FormClosing
).
Второе, событие FormClosed
, происходит после закрытия формы. На данный момент вы не можете получить доступ к элементам управления, которые были в форме, хотя вы по-прежнему можете выполнять очистку переменных (например, закрытие управляемых ресурсов).
Обновлено для использования 'FormClosing' и' FormClosed' как 'Closing' и' Closed' устарели. – Powerlord
Плюс 2 для подробного описания того, что вы обновили от и до. – AidanO
Это определенно «все переменные», а также элементы управления в форме?Я попробовал только сейчас и ссылаюсь на 2 поля класса Form, которые у меня есть (унаследованные от формы), и к ним можно получить доступ в порядке - в событии FormClosed – PandaWood
public FormName()
{
InitializeComponent();
this.FormClosed += FormName_FormClosed;
}
private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
//close logic here
}
Или другой альтернативой является переопределить методы OnFormClosed() или OnFormClosing() из System.Windows.Forms.Form.
Следует ли использовать этот метод, зависит от контекста проблемы и более полезен, если форма будет подклассифицирована несколько раз, и все они должны выполнить один и тот же код.
События более полезны для одного или двух случаев, если вы делаете то же самое.
public class FormClass : Form
{
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
// Code
}
}
Синтаксис:
form_name.ActiveForm.Close();
Пример:
{
Form1.ActiveForm.close();
}
- 1. Node js windows child process on exit и close event
- 2. JQuery Clear Form on close
- 3. C# form Close message box on button click
- 4. VS C++ Form Process :: Start
- 5. jQuery iframe modal close on form submit
- 6. WeifenLuo DockPanel Suite Form Freeze on Close
- 7. JQuery Лайтбокс Close On Form Представление
- 8. close html form on javascript function
- 9. Shadowbox - Auto close on php form submission
- 10. Fancybox form ajax post close on submit
- 11. MDI Child form close on new open
- 12. Close form on mouse up event
- 13. html form on click do php function
- 14. Autoplay video on windows form
- 15. Windows form keypress on non active form
- 16. C++ form unresponsive on start
- 17. Windows Form freezing on show()
- 18. PHP Process Dynamic Form
- 19. Validating form close бесконечный цикл
- 20. Catch close event of child form C#
- 21. QSplashScreen close on click
- 22. Close Form Button Event
- 23. Powershell - Close form after time
- 24. HTML/AJAX/PHP FORM PROCESS
- 25. Приложение C# для Windows Form Form пустое?
- 26. Access 2010 Form Close button
- 27. Close Button on VS11 Apps
- 28. Acrobat Reader ActiveX Access Violation on form close
- 29. jQuery iframe modal close on form submit работает частично
- 30. WPF Hide on Close?
нет "Закрыто" события, только "FormClosed" - вполне неинтуитивных –
@hello_earth: Было 'Closed' событие в .Net 1; он был заменен на .Net 2.0 из-за различных проблем. Исходное событие 'Closed' все еще существует для совместимости, но скрыто. – SLaks