Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:当用户按下关闭按钮[X]时是否会触发事件?_C#_Wpf_Events - Fatal编程技术网

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按钮,如果您插入了一些信息,则只有“接受”或“取消”按钮