Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 如何基于字符串设置复选框_C#_Wpf - Fatal编程技术网

C# 如何基于字符串设置复选框

C# 如何基于字符串设置复选框,c#,wpf,C#,Wpf,我有一个函数,它从txt文件中读取一些数据,然后将数据写入我的项目 我的问题是我无法填写我的复选框,因为它们无法识别字符串 比如说 CheckBox1.IsChecked = File.ReadLines(filename).Skip(0).Take(1).First(); 它表示字符串不能转换为布尔值 在本例中,我的txt文件中的第一行显然是错误的,因此输出不是问题。使用以下两种方法之一: CheckBox1.IsChecked = bool.Parse(File.ReadLines(fil

我有一个函数,它从txt文件中读取一些数据,然后将数据写入我的项目

我的问题是我无法填写我的复选框,因为它们无法识别字符串

比如说

CheckBox1.IsChecked = File.ReadLines(filename).Skip(0).Take(1).First();
它表示字符串不能转换为布尔值


在本例中,我的txt文件中的第一行显然是错误的,因此输出不是问题。

使用以下两种方法之一:

CheckBox1.IsChecked = bool.Parse(File.ReadLines(filename).Skip(0).Take(1).First());

CheckBox1.IsChecked = Convert.ToBoolean(File.ReadLines(filename).Skip(0).Take(1).First())
请注意,只有当文件中的文本始终为true或false时,此选项才有效,如果文本可能为其他内容,请使用TryParse


有关更多详细信息,请参见此处

为什么不读取字符串中的值,然后比较此值是否等于True或False,如:

List<string> myLines = File.ReadLines("C:\\Temp\\MyFile.txt").ToList();
bool isChecked = false;
string myValue = myLines.FirstOrDefault();
if(myValue != null && myValue.Equals("true", StringComparison.OrdinalIgnoreCase))
    isChecked = true;

CheckBox1.Checked = isChecked;

像这样你的代码是干净和安全的

您的文件第一行的预期/实际内容是什么?IsChecked预期bool,但您正在分配文件的第二行,它将是string类型。如果第二行是布尔值,那么您需要通过bool.parse对其进行解析。实际内容为false。@ArjunVachhani出于好奇,您为什么认为正在解析的是第二行?@ArjunVachhani不这么认为。ReadLines返回一个IEnumerble。Skip0.Take1.First应该与FirstFile.ReadLinesfilename.Skip0.Take1.First等效真的吗?这个技巧的目的是什么呢?File.ReadLinesfilename.first呢?你不知道第一行的内容,所以你确定它可以被解析为bool吗?@fubo,我只是在重复问题中的代码,并演示如何将字符串转换为bool,如果您阅读了我关于如何处理除true或false之外的其他输入的警告,以及开场白提到他从文件中获得的值为“false”的事实,那么我的答案是正确的,因为它显示了如何转换。这正是我所需要的。或者冗余性要少得多:CheckBox1.IsChecked=true.EqualsFile.ReadLinesC:\\Temp\\MyFile.txt.FirstOrDefault,StringComparison.Ordinalinorecase@克莱门斯:我不同意你的快捷方式,因为你从一个未知的字符串开始,它可以是空的,第二个文件。ReadLines可以有一个Eception,出于多种原因。请仔细阅读它:true.equals某些东西CanValidlyBenull将始终有效。您在样本中发现了什么异常?还要注意的是,除此之外,使用List是毫无意义的,null conditional?。用Myline?数数是没有意义的。如果执行达到该行,myLines不能为null。您是对的,我删除了null条件。