【问题标题】:How can I prevent my disabled winform from losing focus when returning from a dialog从对话框返回时,如何防止禁用的 winform 失去焦点
【发布时间】:2012-11-07 19:48:09
【问题描述】:

我有一个 .net winforms 应用程序,其中一次显示多个表单。一种形式是常规禁用(this.enabled = false;)。在此期间,表单会创建并显示自定义模式对话框。当对话框关闭时,原始表单,即被禁用的表单,失去焦点。我删除了将表单设置为禁用的代码,当我测试它时,表单在从对话框返回后保持焦点。有没有办法让禁用的表单打开一个模态自定义对话框,然后在对话框关闭时保持专注并在其他表单之上?

【问题讨论】:

    标签: .net winforms


    【解决方案1】:

    没有。当对话框关闭时,Windows 管理器必须选择另一个窗口来获得焦点。当您的应用程序没有剩余已启用的窗口时,它必须选择另一个应用程序的窗口。这可能会将您应用的窗口推到后台。

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

    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;
    }
    

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

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多