Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从控件创建csv文件_C#_Wpf_Csv - Fatal编程技术网

C# 从控件创建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

我有一份WPF申请表,上面有问题和答案。问题在文本框中,答案在组合框中。用户为每个问题选择一个答案。我需要创建一个包含问题和答案的csv文件。 我计划遍历每个控件,获取问答的值,并创建csv文件,如下所示:

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,除非你必须这样做。