我从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.");
}
}
答案 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;
}
}
}