我们可以知道用户是否关闭了窗口或WPF上的代码?

时间:2011-11-21 11:09:51

标签: c# wpf visual-studio-2010 xaml wpf-controls

我有一个窗口控件,我在我的应用程序上显示。有时,用户关闭窗口(单击“X”按钮),有时窗口由代码自动关闭。

我正在收听已关闭的事件(也尝试使用Closing),并且想知道我在哪种情况下(用户或代码)。这可能吗?

(我知道this问题,但它确实没有令人满意的答案)

编辑:

我正在寻找一个简单的解决方案,或者某种方式来了解事件的起源。我知道我可以像Sandeep Bansal建议的那样自己实现这个功能。

2 个答案:

答案 0 :(得分:2)

为什么不创建一个布尔值,然后在发生某个活动时设置它?

bool closedByUser = false;

然后代码要关闭表单,只需添加closedByUser = false;closedByUser = true;,如果操作是用户派生的。

答案 1 :(得分:2)

选项1: 定义新类型

 public class CodeClosingEventArgs : EventArgs
 { 
  // Fill any custom data you want
 }

然后在代码中明确调用OnClosed(new CodeClosingEventArgs());并检查事件类型,如果是“正常”事件arg,则通过单击“X”来检查用户。

选项2:

使用关闭表单的自定义方法。

 public void MyClosingFormMethod()
 {
    base.OnClosed(null); 
 }