如何使用c#中的Savefiledialog将文件保存到特定目录。在打开savefile对话框时,路径用户不应更改目录。
答案 0 :(得分:1)
没有直接的方式(例如KeepSameFolder=True
这样的属性)
您唯一的选择是为FileOK事件编写事件处理程序,如果文件夹不是您喜欢的文件夹,则取消单击“保存”按钮。
取消事件不会关闭SaveFileDialog,用户可以修复其错误
// declare at the global class level
string allowedPath = @"c:\temp";
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
if (!Path.GetDirectoryName(openFileDialog1.FileName) == allowedPath )
{
MessageBox.Show("You should save your file in or a sub folder of: " + allowedPath);
e.Cancel = true;
}
}
编辑:在Mr Hofman的评论之后,如果您允许选择基本路径的子文件夹,那么您应该将事件处理程序内的检查更改为
string userChoice = Path.GetDirectoryName(openFileDialog1.FileName);
if (!userChoice.StartsWith(allowedPath))
{
MessageBox.Show("You should save your file in the folder: " + allowedPath);
e.Cancel = true;
}
然而,正如上面的评论中所述,我认为当用户没有选择他/她想要保存文件的位置时使用SaveFileDialog不是一个好选择。如果文件夹是预定义的,那么只需准备一个可重复使用的InputForm,它只询问文件名并在代码中构建完整的文件名。