从对话框返回时,我如何防止残疾人的winform失去焦点



i有一个.NET WINFORMS应用程序,其中一次显示多个表单。一种表单是禁用utarinley(this.enabled = false;)。在此期间,表格创建并显示一个自定义模态对话框。当对话框关闭时,原始形式(禁用的形式)失去了焦点。我删除了将表格设置为禁用的代码,当我对其进行测试时,表格从对话框返回后保持了焦点。有什么方法可以让禁用的表单打开模态自定义对话框,然后在关闭对话框时保持专注并在其他形式的顶部?

no。Windows Manager必须选择另一个窗口,以将对话框关闭时给予重点。当您的应用程序没有剩下的窗口启用时,它必须必须选择另一个应用程序的窗口。这可能会将应用程序的窗口推入后台。

可能的解决方法是在对话框关闭之前快速启用窗口,然后再将其禁用。这样:

using (var dlg = new Form2()) {
    dlg.FormClosing += new FormClosingEventHandler((s, ea) => {
        if (!ea.Cancel) this.Enabled = true; 
    });
    if (dlg.ShowDialog() == DialogResult.OK) {
        // etc...
    }
    this.Enabled = false;
}

但请注意,这通常是一个可用性问题。用户切换到另一个应用程序后,她将无法再次切换回您的。

最新更新