1

我正在用 c# 开发一个程序,我遇到了这个问题。

我想显示引用特定目录的对话框。

我知道有 OpenDialogFolder 和 SaveDialog,但我不想保存或打开任何文件,我想要的只是打开一个特定的目录对话框。

像这个截图:

在此处输入图像描述

4

1 回答 1

3

您似乎只想打开 Windows 资源管理器的副本。您可以通过简单地调用 Process.Start() 并仅指定一个没有文件名的文件夹路径来做到这一点:

Process.Start(@"C:\Temp\");

Windows shell 的默认行为是,在命令行上给出这样的命令(或快捷方式或运行命令)是打开 Windows 资源管理器以显示指定路径的内容。

现在,Windows 资源管理器是一个外部进程,您正在启动它,然后让它做它的事情。因此,它的行为与模态对话框不同,例如防止对话框失去焦点到另一个窗口。但是,您可以通过将 Process.Start (a Process) 的结果分配给变量,然后在不带参数的情况下调用该 Process 的 WaitForExit() 方法来模仿对话框的“不能对应用程序执行任何其他操作”行为. 这将阻塞应用程序的主线程,直到用户关闭您打开的资源管理器窗口。它并不完美;通过阻塞线程,应用程序将不会响应任何绘制自身的请求或执行任何其他基本操作,即使对话中断的窗口仍会执行,您仍然可以在技术上“激活” 用于启动 Windows 资源管理器的窗口,它将把它带到 Windows 资源管理器的前面。资源管理器窗口也可以被最小化(一些对话框通常不允许),你可以做很多事情来阻止它。

于 2012-08-31T18:58:42.827 回答