C# WPF:当用户按下关闭按钮[X]时是否会触发事件?
当用户按下关闭按钮时是否会触发事件C# WPF:当用户按下关闭按钮[X]时是否会触发事件?,c#,wpf,events,C#,Wpf,Events,当用户按下关闭按钮时是否会触发事件 这是因为手动关闭窗口(使用Close方法)和用户按下[X]按钮时都会触发窗口Closing事件……但我只需要知道用户何时按下[X]手动关闭窗口时,按钮不起作用。我不相信在WPF中有办法区分它们(尽管我不是肯定的) 我在WinForms中处理它的方法是创建一个成员变量“_Closing”,将其设置为false,以及一个方法“ReallyClose()”,该方法将_Closing设置为true,然后调用Close。如果_Closing未设置为true,我的结账处理
这是因为手动关闭窗口(使用
Close
方法)和用户按下[X]按钮时都会触发窗口Closing
事件……但我只需要知道用户何时按下[X]手动关闭窗口时,按钮不起作用。我不相信在WPF中有办法区分它们(尽管我不是肯定的)
我在WinForms中处理它的方法是创建一个成员变量“_Closing”,将其设置为false,以及一个方法“ReallyClose()”,该方法将_Closing设置为true,然后调用Close。如果_Closing未设置为true,我的结账处理程序将取消结账
是的,这有点像黑客,但它奏效了。我也不认为有办法区分它们。您可以在Application.Exit事件上放置一个处理程序,但它不区分“红色X按钮关闭”和“alt-F4关闭”(或您正在考虑的任何其他类型的关闭)
顺便说一句,如果您检查Application.Exit,请确保也检查Application.sessioning-如果有人在您的应用程序运行时注销,您无法保证将调用Application.Exit。尝试在类中放置名为Cancel和bool变量的按钮,以便当您单击按钮时将其设置为true,并在关闭事件中检查是否为true使用e.Cancel=false退出窗口我尝试了所有操作,但它对我无效,我采用这种方式,您还可以删除X按钮,如果您插入了一些信息,则只有“接受”或“取消”按钮