从控件创建csv文件

本文关键字:文件 csv 创建 控件 | 更新日期: 2023-09-27 18:02:29

我有一个WPF应用程序,带有一个带有问题和答案的表单。问题在文本块中,答案在组合框中。用户为每个问题选择一个答案。我需要创建一个csv文件与问题和答案。我计划循环遍历每个控件并获得问题和答案的值,并创建如下所示的csv文件:

for()
{
 String csv = String.Join(Environment.NewLine, txtQuestion.Text +";" + cbAnswer.Text); 
}
System.IO.File.WriteAllText(@"C:'Test'Samplec.csv", csv);

这是个好办法吗?

从控件创建csv文件

总之,NO这不是一个好方法。直接访问UI在WPF中是一个糟糕的设计/实现的大危险信号。

您应该有一个项目控件,该控件绑定到保存问题和答案字符串的某个对象的ObservableCollection。然后您只需遍历集合:

public class QuestionAnswerPair
{
    public String Question { get; set; }
    public String Answer { get; set; }
}
.....
ObservableCollection<QuestionAnswerPair> Questions { get; set; }
.....  
String csv = String.Join(Questions.Select(qAndA => String.Format("{0};{1}'n", qAndA.Question , qAndA.Answer)).ToArray(), ','); 
System.IO.File.WriteAllText(@"C:'Test'Samplec.csv", csv);

XAML代码片段:

<ItemsControl ItemsSource="{Binding Questions}">
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal"/>
            <TextBox Text="{Binding Question}"/>
            <TextBox Text="{Binding Answer}"/>
         </StackPanel>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>

这会生成一种奇怪的csv文件,但它与您的代码非常匹配。我相信您可以弄清楚解析,但如果您有问题,请随时询问。