Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将FolderBrowserDialog设置为前景_C#_Installshield_Folderbrowserdialog - Fatal编程技术网

C# 将FolderBrowserDialog设置为前景

C# 将FolderBrowserDialog设置为前景,c#,installshield,folderbrowserdialog,C#,Installshield,Folderbrowserdialog,我正在创建一个基本的MSI installshield安装程序。对于选择安装路径,我称之为FolderBrowserDialog。除了后台出现FolderBrowser对话框外,一切正常。我想将其设置为前景窗口。此代码始终返回true,如果没有打开其他窗口,则可以正常工作 如何检查dialogHandle是否是我的对话框句柄 以下是我的方法: /// <param name="fPath">INSTALLPATH</param> /// <param nam

我正在创建一个基本的MSI installshield安装程序。对于选择安装路径,我称之为FolderBrowserDialog。除了后台出现FolderBrowser对话框外,一切正常。我想将其设置为前景窗口。此代码始终返回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;
    }
///INSTALLPATH
///安装护罩手柄
/// 
公共字符串NetworkFolderDialog(字符串sFilePath,IntPtr句柄)
{
FolderBrowserDialog=新建FolderBrowserDialog();
IntPtr handle2=GetDesktopWindow();
IntPtr dialogHandle=GetWindow(handle2,5);
bool set=setforegroundindow(dialogHandle);
DialogResult结果=dialog.ShowDialog();
Show(set.ToString());
if(result==DialogResult.OK)
返回对话框。选择路径;
其他的
返回sFilePath;
}

谢谢您的帮助。

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

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

bool set = SetForegroundWindow(dialogHandle);

这里有一个关于这个的讨论:

我试过这个。但它根本不起作用。FolderBrowser对话框总是出现在安装窗口的后面。你能得到安装窗口的句柄吗?如果是这样,您可以使用ShowDialog的重载版本(dialog.ShowDialog(this))。