Вопрос

Я новичок в программировании и столкнулся с некоторыми трудностями.Я надеюсь сохранить данные, которые я генерирую (файл WPF DataGrid) в текстовый файл.

Это то, что у меня есть на данный момент:

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

К сожалению, это не работает. PersonInfosDetails имеет тип ObservationCollections<T> и SelectCheckBox — флажок, установленный пользователем и указывающий, какие файлы пользователь хочет сохранить.

Есть идеи или предложения?Я был бы очень признателен за вашу помощь и большое спасибо за ваше время!

Это было полезно?

Решение

Непонятно, что такое свойство SelectCheckBox.Однако вам необходимо вынести часть программы, занимающуюся записью, за пределы цикла.Внутри цикла просто добавьте информацию о каждом человеке в свой экземпляр 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())
}

Другие советы

Попытался ли ты Как:Запись в текстовый файл (Руководство по программированию на C#)?

Кроме того, предоставленный вами код не будет работать, если SelectCheckBox является статическим свойством PersonInfos сорт.Вероятно, вам придется изменить if заявление для

if (personInfos.SelectCheckBox == true)
{
    // ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top