在我的 Windows 窗体的 Form_Load 事件中,我想显示一个 FolderBrowserDialog 让用户选择一个目录,如果他们选择的目录无效(意味着它缺少应用程序需要的某些文件),我想再次显示它. 但是,当我创建一个新的 FolderBrowserDialog 时,当我调用 ShowDialog 时它不会出现。
while (ValidDirectorySelected() == false && tryAgain == true)
{
using (FolderBrowserDialog dialog = new FolderBrowserDialog())
{
dialog.ShowNewFolderButton = false;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
{
tryAgain = false;
}
}
}
当我踏入其中时,第二次到达 dialog.ShowDialog() 行,然后什么也没有发生。对话框不会出现,调试器也不会继续。它只是停止。它第一次完美运行,但不是第二次。我什至尝试复制整个 using 块并将其粘贴在第一个块之后,并且发生了同样的事情。该对话框仅显示一次。
我需要怎么做才能多次显示 FolderBrowserDialog?
解决方案:
将“this”传递给 ShowDialog 解决了我的问题。我还将 using 移到了 while 循环之外,以避免不必要地重新创建对话框。