J'utilise SaveFileDialog.SaveFile
. Comment obtenir la lettre de lecteur par défaut (système d'exploitation) et limiter les options permettant d'afficher uniquement .BIN
comme extension de fichier?
J'ai essayé de lire les documents sur MSDN, mais je suis très novice dans ce domaine et, pour être honnête, je les trouve parfois mal définis.
Le contrôle SaveFileDialog
ne fera aucune sauvegarde. Il vous fournit simplement une interface pratique pour afficher la boîte de dialogue de sauvegarde de fichier par défaut de Windows.
1) Définissez la propriété InitialDirectory
sur le lecteur sur lequel vous souhaitez afficher un autre paramètre par défaut. Pensez simplement aux autres ordinateurs qui pourraient avoir une disposition différente. Par défaut, Windows enregistre le répertoire utilisé la dernière fois et le présente à nouveau.
2) qui est géré en dehors du contrôle. Vous devrez vérifier les résultats de la boîte de dialogue, puis sauvegarder vous-même (écrire un fichier texte ou binaire, par exemple).
Juste à titre d’exemple rapide (il existe différentes façons de le faire) .savefile
est un contrôle de type 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%"); fournira le système d’exploitation installé, et vous pourrez définir les filtres sur savedialog Obtenir le chemin du fichier de la boîte de dialogue de sauvegarde C #
Voici un exemple qui filtre les fichiers BIN. De plus, Windows souhaite maintenant que vous enregistriez les fichiers sur les emplacements utilisateur, et non sur les emplacements système, voici donc un exemple (vous pouvez utiliser intellisense pour parcourir les autres options):
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
}
Bonne question! Aucune des réponses ne correspondait exactement à ce dont j'avais besoin, c'est donc ce que j'ai proposé.
// 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);
}