【问题标题】:DataGridView and CheckBoxesDataGridView 和复选框
【发布时间】:2013-05-15 15:31:43
【问题描述】:

我正在制作一个应用程序,其中有一个带有按钮的页面和一个内部数据网格视图。

数据来自 MySQL,人口是这样完成的:

this.ObjectsTable.Rows.Add(Objects.GetValue(index, 0), 
                           Objects.GetValue(index, 1), 
                           Objects.GetValue(index, 2), 
                           Objects.GetValue(index, 3));

问题:

我无法选中该复选框。字面上地。当我点击它时 到“pressed/onPress”状态,但永远不会“checked”。

如何解决这个问题?以及如何获取选中复选框的行? 我想创建一个数组,然后遍历它们。

【问题讨论】:

  • 能否展示一些GridView的前端代码?

标签: c# checkbox datagridview


【解决方案1】:

首先检查您的DataGridViewEnabled 还是不是ReadOnly,如果这无助于检查Column 是否不是只读的。

您问题答案的第二部分取决于您是否想立即知道哪个CheckBox 已被选中。是的话就使用这个事件:

private void GridCellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex < 0 || e.ColumnIndex < 0)
    {
        return;
    }

    if (dataGridView1[e.ColumnIndex, e.RowIndex] is DataGridViewCheckBoxCell)
    {
        var check = (dataGridView1[e.ColumnIndex, e.RowIndex].Value as bool?) ?? false;

        if (check)
        {
            //checked
        }
    }
}

或者只是遍历所有行并使用复选框检查单元格的值:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
      var check = (row.Cells[0].Value as bool?) ?? false;
}

【讨论】:

  • 对不起劫持,但我正在寻找相同的答案。我也偶然发现了 cellvaluechanged 事件,但我遇到的问题是,当加载表单并从 SQL 填充数据时,它会注册为 cellvaluechanged 事件并尝试执行检查。我在那里放了一个 if checkstate.unchecked exit sub ,但是当它尝试同时检查下一行并退出检查时,我遇到了应用程序崩溃。有什么办法吗?
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多