将 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"的最佳方法?

将 XML true 或 false 绑定到 DataGridViewCheckBoxColumn

您必须将

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);
  }

我自己解决了这个问题。问题是如果你使用重复。价值,它给了我们TrueFalse而不是truefalse

这意味着 c# 布尔值是truefalse而不是TrueFalse。正确的代码是

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);