Pregunta

Soy nuevo en programación y enfrento algunas dificultades.Espero guardar los datos que estoy generando (un WPF DataGrid) en un archivo de texto.

Esto es lo que tengo actualmente:

Ventana principal.xaml.cs:

private void SaveButton_Click(object sender, RoutedEventArgs e)
{
    string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
    PersonInfosTable.ConvertToTXTFile(fileName);
}

PersonaInfosTable.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();
        }
    }
}

Desafortunadamente, esto no funciona. PersonInfosDetails es de tipo ObservationCollections<T> y SelectCheckBox es la casilla de verificación seleccionada por el usuario e indica qué archivos desea guardar el usuario.

¿Alguna idea o sugerencia?¡Apreciaría mucho tu ayuda y muchas gracias por tu tiempo!

¿Fue útil?

Solución

No está claro qué es la propiedad SelectCheckBox.Sin embargo, necesita mover la parte de escritura de su programa fuera del ciclo.Dentro del bucle, simplemente agregue la información de cada persona a su instancia de StringBuilder.

 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())
}

Otros consejos

Has probado Cómo:Escribir en un archivo de texto (Guía de programación de C#)?

Además, el código que ha proporcionado no funcionará a menos que SelectCheckBox es una propiedad estática de la PersonInfos clase.Probablemente tendrás que cambiar el if declaración a

if (personInfos.SelectCheckBox == true)
{
    // ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top