我有一个窗口控件,我在我的应用程序上显示。有时,用户关闭窗口(单击“X”按钮),有时窗口由代码自动关闭。
我正在收听已关闭的事件(也尝试使用Closing),并且想知道我在哪种情况下(用户或代码)。这可能吗?
(我知道this问题,但它确实没有令人满意的答案)
编辑:
我正在寻找一个简单的解决方案,或者某种方式来了解事件的起源。我知道我可以像Sandeep Bansal建议的那样自己实现这个功能。
答案 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);
}