我正在使用SaveFileDialog.SaveFile
。如何将其设置为默认(操作系统)驱动器号,并将选项限制为仅显示.BIN
作为文件扩展名?
我尝试阅读MSDN上的文档,但我对此很新,说实话我发现它们有时不清楚。
答案 0 :(得分:93)
SaveFileDialog
控件根本不会进行任何保存。它所做的只是为您提供一个方便的界面来实际显示Windows的默认文件保存对话框。
1)将属性InitialDirectory
设置为您想要的驱动器以显示其他默认值。想想可能有不同布局的其他计算机。默认情况下,Windows将保存上次使用的目录并再次显示。
2)这是在控制之外处理的。您必须检查对话框的结果,然后自己进行保存(例如,写一个文本或二进制文件)。
就像一个简单的例子(有其他方法可以做到)。
savefile
是SaveFileDialog
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);
}