0

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

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


编辑:看来我接受答案太仓促了。现在,我的 BeforeInstall 事件处理程序中有如下代码:

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

行为如下:

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

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

4

4 回答 4

3

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

var licenseForm = new Form
                  {
                      TopMost = true
                  };
于 2012-01-03T15:00:00.807 回答
2
this.TopMost = true;

在加载方法中

于 2012-01-03T15:04:35.443 回答
2

只需要设置 Window.Topmost = true

于 2012-01-03T14:59:30.220 回答
1

使用 TopMost 属性!

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost.aspx

于 2012-01-03T15:02:18.420 回答