C# 从控件创建csv文件
我有一份WPF申请表,上面有问题和答案。问题在文本框中,答案在组合框中。用户为每个问题选择一个答案。我需要创建一个包含问题和答案的csv文件。 我计划遍历每个控件,获取问答的值,并创建csv文件,如下所示:C# 从控件创建csv文件,c#,wpf,csv,C#,Wpf,Csv,我有一份WPF申请表,上面有问题和答案。问题在文本框中,答案在组合框中。用户为每个问题选择一个答案。我需要创建一个包含问题和答案的csv文件。 我计划遍历每个控件,获取问答的值,并创建csv文件,如下所示: for() { String csv = String.Join(Environment.NewLine, txtQuestion.Text +";" + cbAnswer.Text); } System.IO.File.WriteAllText(@"C:\Test\Samplec.cs
for()
{
String csv = String.Join(Environment.NewLine, txtQuestion.Text +";" + cbAnswer.Text);
}
System.IO.File.WriteAllText(@"C:\Test\Samplec.csv", csv);
这是一个好办法吗?总之,不这不是一个好办法。在WPF中,直接访问UI是设计/实现不佳的一大危险信号 您应该有一个items控件,该控件绑定到某个对象的
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);
公共类问题解答对
{
公共字符串问题{get;set;}
公共字符串答案{get;set;}
}
.....
可观察收集问题{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文件,但它与您的代码非常匹配。我相信您可以理解解析过程,但如果有问题,请随时提问。绝对不行。这应该在绑定项控件中,然后可以在绑定源上迭代。你不应该在WPF中直接操作或访问UI,除非你必须这样做。