Domanda

Sono nuovo di programmare e affrontare alcune difficoltà.Spero di salvare i dati che sto generando (un wpf DataGrid) in un file di testo.

Questo è ciò che attualmente ho:

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

Sfortunatamente, questo non funziona.PersonInfosDetails è di tipo ObservationCollections<T> e SelectCheckBox è la casella di controllo selezionata dall'utente e indica quali file che l'utente vuole salvare.

Qualsiasi idea o suggerimento?Apprezzerei il tuo aiuto così tanto e grazie mille per il tuo tempo!

È stato utile?

Soluzione

Non è chiaro qual è la proprietà SelecKcheckBox.Tuttavia, è necessario spostare la parte di scrittura del tuo programma al di fuori del loop.All'interno del loop aggiungi solo tutte le informazioni sulla persona all'istanza di 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())
}
.

Altri suggerimenti

hai provato a Come: scrivere su un file di testo (Guida alla programmazione C #?

Inoltre, il codice che hai fornito non funziona a meno che SelectCheckBox sia una proprietà statica della classe PersonInfos.Probabilmente dovrai cambiare la Dichiarazione if per

if (personInfos.SelectCheckBox == true)
{
    // ...
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top