离开表单时C#保存确认消息

时间:2012-10-02 11:27:50

标签: c# winforms

在离开(不关闭 - 将焦点设置为另一种形式)非模态表单时显示保存确认消息的最佳方法是什么?

用户可以选择

  • 是(保存更改并将焦点设置为targetform)
  • no(回滚并将焦点设置为目标表单)
  • 取消(保持活动状态 - 取消设置焦点到目标表格)

我无法找到防止将焦点设置为其他形式的解决方案。与关闭事件类似,我可以使用FormClosingEventArgs.Cancel属性。

在我的情况下,使用模态表格是不可接受的。

提前致谢

2 个答案:

答案 0 :(得分:0)

首先,您可以使用Deactivated事件来检测表单何时失去焦点。然后,如果用户想要停留在失去焦点的表单中,您可以调用BringToFront方法将表单重新设置为活动状态。

您无法阻止用户激活其他表单,但您可以尝试(使用上述方法)将激活更改回当前表单。

答案 1 :(得分:0)

最好的方法是覆盖OnLostFocus事件。这是代码:

protected override void OnLostFocus(EventArgs e) { 
    base.OnLostFocus(e); 
    this.Focus(); 
}