【问题标题】:Set FolderBrowserDialog to foreground将 FolderBrowserDialog 设置为前台
【发布时间】:2009-09-30 09:56:25
【问题描述】:

我正在创建一个基本的 MSI installshield 安装程序。为了选择安装路径,我调用了 FolderBrowserDialog。一切正常,除了 FolderBrowserDialog 在后台出现。我想将其设置为前景窗口。如果没有打开其他窗口,此代码始终返回 true 并且可以正常工作。

如何检查 dialogHandle 是否是我的对话框句柄?

这是我的方法:

/// <param name="fPath">INSTALLPATH</param>
    /// <param name="handle">installshield handle</param>
    /// <returns></returns>
    public string NetworkFolderDialog(string sFilePath, IntPtr handle)
    {

        FolderBrowserDialog dialog = new FolderBrowserDialog();

        IntPtr handle2 = GetDesktopWindow();
        IntPtr dialogHandle = GetWindow(handle2, 5);

        bool set = SetForegroundWindow(dialogHandle);

        DialogResult result = dialog.ShowDialog();

        MessageBox.Show(set.ToString());

        if (result == DialogResult.OK)
            return dialog.SelectedPath;
        else
            return sFilePath;
    }

感谢您的帮助。

【问题讨论】:

    标签: c# installshield folderbrowserdialog


    【解决方案1】:

    我认为您应该从代码中删除以下行:

    IntPtr handle2 = GetDesktopWindow();
    IntPtr dialogHandle = GetWindow(handle2, 5);
    
    bool set = SetForegroundWindow(dialogHandle);
    

    【讨论】:

    • 我试过这个。但它根本不起作用。 FolderBrowserDialog 总是出现在安装窗口的后面。
    • 你能拿到安装窗口的句柄吗?如果是这样,您可以使用重载版本的 ShowDialog (dialog.ShowDialog(this))。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多