我是编程新手,面临一些困难。我希望保存我正在生成的数据(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