当前位置: 首页 > 编程语言 > C#

检查窗体为什么关闭分享

时间:2023-04-10 18:15:29 C#

检查窗体为什么关闭如何检测窗体是如何关闭的?例如,如何判断用户是否点击了关闭表单的按钮,或者用户是否点击了右上角的“X”?谢谢。更新:忘记提及按钮调用Application.Exit()方法。正如bashmohandes和DmitriyMatveev已经提到的,解决方案应该是FormClosingEventArgs。但是正如Dmitriy所说,它对您的按钮和右上角的X没有任何影响。要区分这两个选项,您可以将布尔属性ExitButtonClicked添加到您的表单,并在调用Application.Exit()之前在按钮单击事件中将其设置为true。现在您可以在FormClosing事件中请求此属性,并在UserClosing的情况下区分这两个选项。例如:publicboolUserClosing{get;放;}publicFormMain(){InitializeComponent();UserClosing=false;this.buttonExit.Click+=newEventHandler(buttonExit_Click);this.FormClosing+=newFormClosingEventHandler(Form1_FormClosing);}voidbuttonExit_Click(objectsender,EventArgse){UserClosing=true;这个。关闭();}voidForm1_FormClosing(objectsender,FormClosingEventArgse){switch(e.CloseReason){caseCloseReason.ApplicationExitCall:break;caseCloseReason.FormOwnerClosing:break;caseCloseReason.MdiFormClosing:break;caseCloseReason.None:中断;caseCloseReason.TaskManagerClosing:break;caseCloseReason.UserClosing:if(UserClosing){//如果用户点击按钮会发生什么?}else{//如果用户点击了右上角的x会发生什么?}休息;案例CloseReason.WindowsShutDown:中断;默认值:中断;}//将其设置回false,仅针对e.Cancel设置为true的情况//并且关闭是aborted.UserClosing=false;您可以在FormClosing事件处理程序中检查FormClosingEventArgs的CloseReason属性以检查一些可能的情况。但是,如果您仅使用此属性,则您描述的情况无法区分。您需要在关闭按钮的单击事件处理程序中编写一些额外的代码来存储一些信息,这些信息将在FormClosing事件处理程序中检查以区分这些情况。EvenFormClosing需要添加一个监听器,它在事件args中发送一个CloseReason类型的属性,这个属性是这些值之一很有用,需要了解更多关于C#的学习教程,希望大家多多关注—//总结://指定表单关闭的原因。publicenumCloseReason{//摘要://关闭的原因未定义或无法确定。None=0,////摘要://操作系统在关闭之前关闭所有应用程序。WindowsShutDown=1,////摘要://此多文档界面(MDI)窗体的父窗体正在关闭。MdiFormClosing=2,////摘要://用户通过用户界面(UI)关闭窗体,例如//通过单击窗体窗口上的关闭按钮,从//窗口的控制菜单中选择关闭,或按ALT+F4。UserClosing=3,////摘要://MicrosoftWindows任务管理器正在关闭应用程序。TaskManagerClosing=4,////摘要://所有者表单正在关闭.FormOwnerClosing=5,////摘要://调用了System.Windows.Forms.Application类的System.Windows.Forms.Application.Exit()方法//。ApplicationExitCall=6,}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: