Comment faire pour enregistrer des données à partir de C# dans un fichier txt?
-
21-12-2019 - |
Question
Je suis nouveau en programmation et face à de grandes difficultés.J'espère pour enregistrer les données, je suis de la génération (WPF DataGrid
) dans un fichier texte.
C'est ce que j'ai actuellement:
MainWindow.xaml.cs:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
PersonInfosTable.ConvertToTXTFile(fileName);
}
PersonInfosTable.cs:
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = null;
Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
if (PersonInfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
StreamWriter file = new StreamWriter(fileName);
file.WriteLine(sb);
file.Close();
}
}
}
Malheureusement, cela ne fonctionne pas. PersonInfosDetails
est de type ObservationCollections<T>
et SelectCheckBox
est la case à cocher sélectionnée par l'utilisateur, et indique les fichiers que l'utilisateur souhaite enregistrer.
Toutes les idées ou suggestions?Je te remercie de ton aide beaucoup et je vous remercie beaucoup pour votre temps!
La solution
Il n'est pas clair quelle est la SelectCheckBox de la propriété.Cependant, vous avez besoin de déplacer l'écriture de la partie de votre programme à l'extérieur de la boucle.L'intérieur de la boucle juste ajouter chaque personne info à votre StringBuilder instance.
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
// Collect every personinfos selected in the stringbuilder
if (personinfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
}
}
// Now write the content of the StringBuilder all together to the output file
File.WriteAllText(filename, sb.ToString())
}
Autres conseils
Avez-vous essayé Comment:Écrire dans un Fichier Texte (Guide de Programmation C#)?
Aussi, le code que vous avez fourni ne fonctionne pas à moins que SelectCheckBox
est une propriété statique de la PersonInfos
classe.Vous aurez probablement à changer le if
déclaration de
if (personInfos.SelectCheckBox == true)
{
// ...
}