c#savefiledialog锁定到特定目录?

时间:2014-03-06 10:56:09

标签: c# savefiledialog

如何使用c#中的Savefiledialog将文件保存到特定目录。在打开savefile对话框时,路径用户不应更改目录。

1 个答案:

答案 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,它只询问文件名并在代码中构建完整的文件名。