FolderBrowserDialog隐藏在后台

时间:2017-10-05 16:02:35

标签: c# backgroundworker folderbrowserdialog

我从Winforms应用程序中打开FolderBrowserDialog。 应用程序启动后第一次运行正常。然后我开始做背景工作并做一些工作。

如果我那么,在Backgroundworker完成之后,再次打开FolderBrowserDialog,应用程序被“锁定”,因为FolderBrowserDialog已打开但隐藏在后台某处。我必须按ALT键才能显示对话框。

问题必须与背景工作者做点什么...... 我该如何解决这个问题?

以下是我打开对话框的代码:

private void metroButtonFolderBrowser_Click(object sender,EventArgs e)         {

        FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
        folderBrowserDialog1.Description = "CD Importordner wählen";
        folderBrowserDialog1.ShowNewFolderButton = false;


        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            importfolder = folderBrowserDialog1.SelectedPath;
            ImportfolderLabelText.Text = importfolder;

        }
        else if (result == DialogResult.Cancel)
        {
            MessageBox.Show("Abbruch gewählt!");
            log.Info("User interrupted folder browser dialog.");
        }

    }

1 个答案:

答案 0 :(得分:0)

您无法直接设置TopMost,但您可以为FolderBrowserDialog提供最顶层的父级:

using System;
using System.Windows.Forms;

private void BrowserForDirectory()
{
    FolderBrowserDialog dirDialog = new FolderBrowserDialog();

        using (var dummy = new Form() { TopMost = true })
        {
            if (dirDialog.ShowDialog(dummy.Handle))
            {
                importfolder = dirDialog.SelectedPath;
            }
        }
}