C# 需要帮助使文件导出功能记住用户选择的路径吗
我的程序中有一个导出数据的函数。导出功能非常好,但我遇到了一些问题:当用户单击“导出”时,他们会看到一个文件夹浏览器,可以选择他们希望导出到的硬盘上的位置。浏览器一开始启动时,所有硬盘驱动器/文件夹都会像应该的那样折叠,但我不知道如何让程序记住用户选择的位置,以便下次他们想要导出时,它会自动打开到该位置,而不是再次打开时所有内容都折叠。我想我只是在逻辑上有点问题。有人有什么建议吗 另外,为了澄清,我试图让它只在会话期间记住位置,而不是像永久性地记在寄存器上一样 以下是我目前的导出功能,如果您认为这会有所帮助:C# 需要帮助使文件导出功能记住用户选择的路径吗,c#,.net,winforms,web-applications,C#,.net,Winforms,Web Applications,我的程序中有一个导出数据的函数。导出功能非常好,但我遇到了一些问题:当用户单击“导出”时,他们会看到一个文件夹浏览器,可以选择他们希望导出到的硬盘上的位置。浏览器一开始启动时,所有硬盘驱动器/文件夹都会像应该的那样折叠,但我不知道如何让程序记住用户选择的位置,以便下次他们想要导出时,它会自动打开到该位置,而不是再次打开时所有内容都折叠。我想我只是在逻辑上有点问题。有人有什么建议吗 另外,为了澄清,我试图让它只在会话期间记住位置,而不是像永久性地记在寄存器上一样 以下是我目前的导出功能,如果您认为
private void Export(int formatVersion, bool pureXmlDriver)
{
if (Device != null)
{
Utilities.StripShortNameFromLongNames(Device);
using (var folderBrowser = new FolderBrowserDialog())
{
folderBrowser.Description = Resources.SelectExportFolder;
if (folderBrowser.ShowDialog() == DialogResult.OK)
{
string selectedFolder = folderBrowser.SelectedPath;
try
{
Cursor = Cursors.WaitCursor;
HandleExport(formatVersion, pureXmlDriver, selectedFolder);
}
finally
{
Cursor = Cursors.Default;
}
}
}
}
}
这应该可以做到。您只需要一个类字段来保存最后一个值
public class MyClass
{
private string selectedPath = "";
public void Export(int formatVersion, bool pureXmlDriver)
{
if (Device != null)
{
Utilities.StripShortNameFromLongNames(Device);
using (var folderBrowser = new FolderBrowserDialog())
{
folderBrowser.Description = Resources.SelectExportFolder;
folderBrowser.SelectedPath = selectedPath;
if (folderBrowser.ShowDialog() == DialogResult.OK)
{
selectedFolder = folderBrowser.SelectedPath;
try
{
Cursor = Cursors.WaitCursor;
HandleExport(formatVersion, pureXmlDriver, selectedFolder);
}
finally
{
Cursor = Cursors.Default;
}
}
}
}
}
}
只需设置最初的选择路径,
folderBrowser.SelectedPath=selectedFolder
@jac我该把它放在哪里呢?我不能将它放在我的folderBrowser.ShowDialog()之前,因为它还没有初始化,对吗?也许我错了。@Raymond不,当你new
it时,对象被初始化了。您已经在设置Description
属性;没有理由不能设置SelectedPath
。但是,您确实需要将selectedPath
缓存在上一次导出的某个位置。如果您的selectedPath尚未初始化,则可以为其指定默认值,即当前程序路径,或将其保留为空。这个问题听起来好像用户已经选择了一个文件夹至少一次,而您想打开对话框到他们最后的选择。也许你在问如何保持所选路径的值?如果这是问题所在,就在你的类中将其作为字段级变量。@jac是的,我不善于解释自己。很抱歉。以下是我想要的:用户在会话中第一次单击导出,文件夹浏览器不默认为任何位置,用户选择要导出到的位置,所选位置将被记住,这样,如果他们在会话中再次单击导出,文件夹浏览器将默认为以前选择的位置。