SaveFileDialog设置默认路径和文件类型?

时间:2011-02-27 21:52:51

标签: c# .net winforms

我正在使用SaveFileDialog.SaveFile。如何将其设置为默认(操作系统)驱动器号,并将选项限制为仅显示.BIN作为文件扩展名?

我尝试阅读MSDN上的文档,但我对此很新,说实话我发现它们有时不清楚。

4 个答案:

答案 0 :(得分:93)

SaveFileDialog控件根本不会进行任何保存。它所做的只是为您提供一个方便的界面来实际显示Windows的默认文件保存对话框。

1)将属性InitialDirectory设置为您想要的驱动器以显示其他默认值。想想可能有不同布局的其他计算机。默认情况下,Windows将保存上次使用的目录并再次显示。

2)这是在控制之外处理的。您必须检查对话框的结果,然后自己进行保存(例如,写一个文本或二进制文件)。

就像一个简单的例子(有其他方法可以做到)。 savefileSaveFileDialog

类型的控件
SaveFileDialog savefile = new SaveFileDialog(); 
// set a default file name
savefile.FileName = "unknown.txt";
// set filters - this can be done in properties as well
savefile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";

if (savefile.ShowDialog() == DialogResult.OK)
{
    using (StreamWriter sw = new StreamWriter(savefile.FileName))
        sw.WriteLine ("Hello World!");
}

答案 1 :(得分:4)

Environment.GetSystemVariable( “%系统驱动%”);将提供已安装的驱动器操作系统,您可以将过滤器设置为savedialog Obtain file path of C# save dialog box

答案 2 :(得分:1)

这是一个实际过滤BIN文件的示例。 Windows现在也希望您将文件保存到用户位置,而不是系统位置,因此这是一个示例(您可以使用intellisense浏览其他选项):

            var saveFileDialog = new Microsoft.Win32.SaveFileDialog()
            {
                DefaultExt = "*.xml",
                Filter = "BIN Files (*.bin)|*.bin",
                InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            };

            var result = saveFileDialog.ShowDialog();
            if (result != null && result == true)
            {
                // Save the file here
            }

答案 3 :(得分:0)

好问题!没有一个答案正是我所需要的,所以这就是我想出的。

        // get path to save file
        string fn = DateTime.Now.ToShortDateString() + " " + cbMaterial.SelectedItem.ToString(); //this combobox is my report name
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.FileName = fn.Replace("/","-").Replace(" ","_");
        sfd.Filter = "(*.csv)|*.csv";
        sfd.ShowDialog();
        string path = sfd.FileName;

        //Build the CSV file data as a Comma separated string.
        string csv = string.Empty;

        //Add the Header row for CSV file.
        foreach (DataGridViewColumn column in gvReports.Columns)
        {
            csv += column.HeaderText + ',';
        }

        //Add new line.
        csv += "\r\n";

        //Adding the Rows
        foreach (DataGridViewRow row in gvReports.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                //Add the Data rows.
                csv += cell.Value.ToString().Replace(",", ";") + ',';
            }

            //Add new line.
            csv += "\r\n";
        }

        if (sfd.FileName != null)
        {
            //Exporting to CSV.
            File.WriteAllText(path, csv);
        }