Ich benutze SaveFileDialog.SaveFile
. Wie kann ich den Standardbuchstaben (Betriebssystem) des Laufwerks erhalten und auch die Option einschränken, nur .BIN
als Dateierweiterung anzuzeigen?
Ich habe versucht, die Dokumente auf MSDN zu lesen, aber ich bin dazu noch neu und ehrlich gesagt, finde ich sie manchmal unklar.
Das SaveFileDialog
-Steuerelement wird überhaupt nicht gespeichert. Sie erhalten lediglich eine praktische Benutzeroberfläche, um das Standarddialogfeld zum Speichern von Dateien von Windows anzuzeigen.
1) Setzen Sie die Eigenschaft InitialDirectory
auf das Laufwerk, auf dem Sie einen anderen Standardwert anzeigen möchten. Denken Sie nur an andere Computer, die ein anderes Layout haben könnten. Standardmäßig speichert Windows das zuletzt verwendete Verzeichnis und zeigt es erneut an.
2) Das wird außerhalb der Kontrolle gehandhabt. Sie müssen die Ergebnisse des Dialogs überprüfen und dann das Speichern selbst durchführen (z. B. Schreiben einer Text- oder Binärdatei).
Ein kurzes Beispiel (es gibt alternative Möglichkeiten, dies zu tun) .savefile
ist ein Steuerelement des Typs 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%"); stellt das installierte Laufwerks-Betriebssystem bereit, und Sie können Filter auf saveialog setzen. Dateipfad des C # -Speicherdialogfelds erhalten .
Hier ist ein Beispiel, das tatsächlich nach BIN-Dateien filtert. Auch Windows möchte jetzt, dass Sie Dateien an Benutzerspeicherorten speichern, nicht an Systemspeicherorten. Hier ein Beispiel (Sie können mit intellisense die anderen Optionen durchsuchen):
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
}
Tolle Frage! Keine der Antworten war genau das, was ich brauchte, also kam ich dazu.
// 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);
}