如此屏幕截图所示,所选文件夹不在视图中。需要向下滚动才能查看选定的文件夹。
同一对话框显示在不同计算机上可见的选定文件夹
我在两台都安装了windows7的电脑上运行它,其中一台运行正常,而第二台运行不正常。它看起来是windows环境的问题,而不是一些代码问题?有没有人能给我一些建议呢?
代码没有变化。我使用了来自不同驱动器的较长路径,但结果是相同的。
private void TestDialog_Click ( object sender, EventArgs e )
{
//Last path store the selected path, to show the same directory as selected on next application launch.
//Properties.Settings.Default.LastPath
FolderBrowserDialog dlgFolder = new FolderBrowserDialog ();
dlgFolder.RootFolder = Environment.SpecialFolder.DesktopDirectory;
dlgFolder.SelectedPath = Properties.Settings.Default.LastPath;
if (dlgFolder.ShowDialog () == System.Windows.Forms.DialogResult.OK)
{
Properties.Settings.Default.LastPath = dlgFolder.SelectedPath;
Properties.Settings.Default.Save ();
}
}
发布于 2016-09-10 12:07:21
我知道这个线程很老了,但是使用扩展方法,可以将它添加到FolderBrowserDialog.ShowDialog方法中,然后在需要的地方重复使用。
示例(如下)只是使用了简单的SendKeys方法(我讨厌这样做,但在本例中,它工作得很好)。当使用SendKeys方法跳转到对话框中选定的文件夹时,如果您在Visual Studio中调试,则SendKeys调用将应用于当前窗口,该窗口将是活动的VS窗口。为了更加可靠并避免错误的窗口获得SendKeys消息,扩展方法将包含外部方法调用,以将消息发送到特定窗口,类似于Marc F发布的消息,但已转换为C#。
internal static class FolderBrowserDialogExtension
{
public static DialogResult ShowDialog(this FolderBrowserDialog dialog, bool scrollIntoView)
{
return ShowDialog(dialog, null, scrollIntoView);
}
public static DialogResult ShowDialog(this FolderBrowserDialog dialog, IWin32Window owner, bool scrollIntoView)
{
if (scrollIntoView)
{
SendKeys.Send("{TAB}{TAB}{RIGHT}");
}
return dialog.ShowDialog(owner);
}
}
发布于 2015-04-17 14:25:41
FolderBrowserDialog^ oFBD = gcnew FolderBrowserDialog;
oFBD->RootFolder = Environment::SpecialFolder::MyComputer;
oFBD->SelectedPath = i_sPathImport;
oFBD->ShowNewFolderButton = false; // use if appropriate in your application
SendKeys::Send ("{TAB}{TAB}{RIGHT}"); // <<-- Workaround
::DialogResult oResult = oFBD->ShowDialog ();
这不是最好的方式,但它对我很有效。
如果没有RootFolder
,它不会在第一次调用时起作用,但在第二次和第二次调用时就会起作用。有了它,它总是有效的。
正如其他人所观察到的那样,此故障取决于操作系统:
我正在使用Win 7专业版x64 SP1
发布于 2016-08-09 02:21:40
在VB.Net代码中,只需在显示对话框之前放置此行代码即可。
SendKeys.Send ("{TAB}{TAB}{RIGHT}")
https://stackoverflow.com/questions/6942150
复制相似问题