2016-01-02 29 views
1

我想浏览LINQPad脚本中的文件夹,所以我尝试使用FolderBrowserDialog。它没有工作。如何在LINQPad中显示FolderBrowserDialog?

这是显示我在做什么的片段?

string path = ""; 
var browser = new FolderBrowserDialog { ShowNewFolderButton = false }; 
if (browser.ShowDialog() == DialogResult.OK) 
{ 
    path = browser.SelectedPath; 
} 

这在运行和挂在用的ShowDialog()与针对该行的黄色执行指针线,但该文件夹的浏览器对话框中是不可见的。

我知道有一个ShowDialog()过载需要IWin32Window owner参数,并认为这可能是解决方案,但还没有想出如何获得主LINQPad窗口的IWin32Window。我希望Util类可以提供一种方法,但除非我错过了它,它似乎并不如此。

任何人都有解决这个问题的建议吗?

+1

这里没有发生。你的代码没有问题 – Steve

+0

Darn。我以前很怕那个。我有时会将我的iPad作为第二个屏幕连接。我最好检查一下没有对话框打开的幻影屏幕。 –

+0

显示设置仅显示一台显示器,而iPad未连接,所以不是这样。尝试使用Alt-Space打开对话框窗口中的系统菜单,但它为LINQPad本身打开。 –

回答

2

设置Run each query in its own process选项设置为true是问题的原因。将该选项设置回默认的false允许上述代码按预期运行。

但是,进行此更改会禁用内置调试功能。此外,行为仍然存在一些问题。

在第一次运行时显示该对话框的脚本,该脚本运行完成后确定或选择取消。但是,在第二次运行脚本时,会按照问题中所述挂起。取消执行并再次运行后,会显示对话框,但在此之后会再次挂起,依此类推。

有人指出,设置Always use fresh application domains选项可能会解决这一点,它确实,让对话框显示在脚本的每次执行。

+0

尝试在设置中启用“总是使用新鲜的应用程序域”,看看是否有帮助。 –

+0

确实如此。谢谢。 –

+0

我发现设置在很多情况下是有问题的,应该确实是一个按程序设置而不是全局设置。 –

相关问题