我们可以知道一个窗口是否已被用户或WPF上的代码关闭

本文关键字:用户 WPF 代码 是否 窗口 一个 我们 | 更新日期: 2023-09-27 18:15:14

我有一个窗口控制,我显示在我的应用程序。有时,窗口是由用户关闭(点击'X'按钮),有时由代码自动。

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

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

编辑:

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

我们可以知道一个窗口是否已被用户或WPF上的代码关闭

选项1:定义一个新类型

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

然后在代码中显式调用OnClosed(new CodeClosingEventArgs());并检查事件类型,如果它是一个"正常"事件参数,则通过单击"X"来确定用户。

选项2:

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

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

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

bool closedByUser = false;

,然后在代码意味着关闭表单的地方添加closedByUser = false;closedByUser = true;,如果动作是用户派生的