SaveFileDialog definindo caminho padrão e tipo de arquivo?

Estou usando SaveFileDialog.SaveFile . Como posso obtê-lo para a letra de unidade padrão (sistema operacional) e também limitar as opções para mostrar apenas .BIN como a extensão do arquivo?

Eu tentei ler os documentos no MSDN, mas eu sou muito novo para isso e para ser honesto, acho que às vezes não está claro.

O controle SaveFileDialog não fará nenhum salvamento. Tudo o que ele faz é fornecer uma interface conveniente para exibir a checkbox de diálogo de salvamento de arquivo padrão do Windows.

1) Defina a propriedade InitialDirectory para a unidade que você gostaria que mostrasse algum outro padrão. Basta pensar em outros computadores que podem ter um layout diferente. Por padrão, o Windows salvará o diretório usado na última vez e o apresentará novamente.

2) Isso é tratado fora do controle. Você terá que verificar os resultados da checkbox de diálogo e depois salvar (por exemplo, escrever um arquivo de texto ou binário).

Apenas como um exemplo rápido (existem maneiras alternativas de fazer isso). savefile é um controle do tipo 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!"); } 

Environment.GetSystemVariable (“% SystemDrive%”); irá fornecer o sistema operacional da unidade instalado, e você pode definir filtros para savedialog Obter o caminho do arquivo da checkbox de diálogo salvar C #

Ótima pergunta! Nenhuma das respostas foi exatamente o que eu precisava, então foi isso que eu criei.

  // 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); } 

Aqui está um exemplo que realmente filtra para arquivos BIN. Também o Windows agora quer que você salve arquivos em locais de usuários, não em locais do sistema, então aqui está um exemplo (você pode usar o intellisense para navegar pelas outras opções):

  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 }