在离开(不关闭 - 将焦点设置到另一个表单)非模态表单时显示保存确认消息的最佳方式是什么?
用户可以选择
- 是(保存更改并将焦点设置到 targetform)
- 否(回滚并将焦点设置到目标表单)
- 取消(保持活动形式 - 取消将焦点设置为目标形式)
我找不到阻止将焦点设置到另一个表单的解决方案。类似于关闭事件,我可以在其中使用 FormClosingEventArgs.Cancel 属性。
在我的情况下,使用模态形式是不可接受的。
提前致谢
最好的方法是覆盖 OnLostFocus 事件。这是代码:
protected override void OnLostFocus(EventArgs e) {
base.OnLostFocus(e);
this.Focus();
}
首先,您可以使用该Deactivated
事件来检测表单何时失去焦点。然后,如果用户想留在失去焦点的表单中,您可以调用该BringToFront
方法再次将表单设置为活动状态。
您不能阻止用户激活另一个表单,但您可以尝试(使用上述方法)将激活更改回当前表单。