将 XML true 或 false 绑定到 DataGridViewCheckBoxColumn
本文关键字:绑定 DataGridViewCheckBoxColumn false XML true | 更新日期: 2023-09-27 18:34:01
我有这样的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"的最佳方法?
您必须将
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);
}
我自己解决了这个问题。问题是如果你使用重复。价值,它给了我们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);