无法在DataGridViewCheckBoxColumn中复选框?

时间:2012-06-29 21:25:36

标签: c# winforms datagridview

我正在创建一个带有复选框列和文本列的简单DataGridView(后面会有更多列,但这是我正在努力工作的最小工作示例)。当我运行此代码时,会出现复选框列,但我无法选中复选框。

DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.ThreeState = false;
checkColumn.Width = 20;

MyDataGridView.Columns.Add(checkColumn);
MyDataGridView.Columns.Add(new DataGridViewTextBoxColumn());

由于在这种情况下没有出现,我想添加一些虚拟数据。

for (int i = 0; i < 10; i++)
{
    MyDataGridView.Rows.Add(new Object[] { true, "test"});
}

通常情况下,DataGridView会填充自定义对象列表中绑定的数据,例如this question of mine,但我认为在继续之前让它以基本方式工作会更好。

我不是试图以编程方式设置检查状态,而是让用户选择然后在各种其他事件处理程序中使用该选择。

6 个答案:

答案 0 :(得分:32)

代码似乎很好,所以我可以告诉您检查并确保正确设置以下DataGridView属性:ReadOnly设置为False和{{1}设置为Enabled

答案 1 :(得分:5)

只需更改DataGridView的readonly属性

即可
     MyDataGridView.ReadOnly = false; 

答案 2 :(得分:5)

我有同样的问题,我的解决方案是改变

  “EditMode”从“EditProgramatically”进入默认值   “EditOnKeystrokeOrF2”,

这解决了我的问题。

以上所有建议均已实施。

亲切的问候 海德

答案 3 :(得分:1)

当您使用DataGridView(DataGridView中的public Boolean property)具有CheckBox ter的对象填充private set时,也会发生这种情况。 DataGridView中代表此(只读)属性的列是自动只读的,因为它不允许在外部设置属性(=对象代码的外侧)。

public class ExampleObject
{
    /// <summary>
    /// A public property that can only be read.
    /// When a DataGridViewRow is populated with this object, the column representing this Boolean property is automatically read-only.
    /// </summary>
    public Boolean QCPassed
    {
        get;
        private set;
    }
}

答案 4 :(得分:1)

我在不同的情况下也有同样的问题 我的DataGridView绑定到一个DataTable,它由一个SqlDataReader(只读)填充。我用SqlDataAdapter替换了SqlDataReader工作正常。

DataTable dt=new DataTable();
SqlDataAdapter da=new SqlDataAdapter("Select <column_names> from <table_name>",con);
da.Fill(dt);

答案 5 :(得分:1)

表格本身可能设置为只读,即使复选框列不是表格设置也会覆盖列设置。