1

我有这样的 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”的最佳方法?

4

2 回答 2

2

您必须将 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);
  }
于 2013-10-06T07:07:08.160 回答
0

我自己解决了这个问题。问题是如果你使用repeat.Value,它给我们或TrueFalse给我们。truefalse

这意味着 c# 布尔值是trueor falsenot Trueor 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);
于 2013-10-06T12:32:16.927 回答