我有像这样的XML文件
<Alarms>
<Alarm>
<Repeat>False</Repeat>
</Alarm>
<Alarm>
<Repeat>True</Repeat>
</Alarm>
</Alarms>
尝试使用以下代码在DataGridViewCheckBoxColumn中绑定这些布尔值。
var xdoc = XDocument.Load("Alarms.xml");
foreach (var x in xdoc.Root.Elements("Alarm"))
{
var repeat = x.Element("Repeat");
bool repeat_v = repeat == null ? false : true;
if (date != null)
this.grid_SavedAlarms.Rows.Add(repeat_v);
}
它在不终止程序的情况下提供运行时异常。并且不勾选复选框。哪一个是将布尔值转换为'repeat_v'的最佳方法?
答案 0 :(得分:1)
你必须在你的网格中添加一个DataGridViewRow,然后再将你的Xml值解析为你的布尔值
bool repeat_v = repeat == null ? false : bool.Parse(repeat.ToString());
if (date != null)
{
DataGridViewRow row = new DataGridViewRow();
row.Cells.Add(new DataGridViewCheckBoxCell() {Value = repeat_v});
this.grid_SavedAlarms.Rows.Add(row);
}
答案 1 :(得分:0)
我自己解决了这个问题。问题是如果你使用repeat.Value,它会给我们True
或False
而不是true
或false
。
这意味着c#布尔值为true
或false
而不是True
或False
。正确的代码是
var repeat = x.Element("Repeat");
bool repeat_v = false;
if (repeat != null)
repeat_v = repeat.Value == "True" ? true : false;
if (date != null)
this.grid_SavedAlarms.Rows.Add(repeat_v);