使安装对话框成为最顶层

时间:2012-01-03 14:54:50

标签: c# install showdialog

我有一个C#项目的安装程序,要求用户在继续安装之前输入许可证。我通过实例化一个表单,然后在其上调用ShowDialog,从用户那里获得许可证。

我的问题是用户可能会在安装过程中点击其他内容。这意味着对话框可能被隐藏,并且安装将不会继续,直到用户发现任务栏上的对话框。我想在最顶层显示许可证对话框,但我不知道该怎么做。我可以以某种方式使我的BeforeInstall事件处理程序中的安装应用程序最顶层吗?安装程序以管理员权限运行。


编辑:我似乎太急于接受答案了。我现在在我的BeforeInstall事件处理程序中有以下代码:

using (var licenseDlg = new LicenseDialog())
{
    licenseDlg.TopMost = true;
    var result = licenseDlg.ShowDialog();
    ...

行为如下:

  • 我尝试安装我的项目
  • 我点击UAC以允许它安装
  • 我最大化cmd窗口。

如果我不做任何其他事情,那么在某些时候许可证窗口会弹出我的cmd窗口。但是,如果我在cmd提示符下键入任何内容,速度大约为每秒1次点击,则许可证窗口不会弹出,它只会显示在任务栏上。即使其他窗口中有活动,我也希望弹出许可证窗口。

4 个答案:

答案 0 :(得分:3)

当您在BeforeInstall事件中打开表单时,只需将TopMost设置为true即可。

var licenseForm = new Form
                  {
                      TopMost = true
                  };

答案 1 :(得分:2)

只需要设置Window.Topmost = true

答案 2 :(得分:2)

this.TopMost = true;

在加载方法

答案 3 :(得分:1)