我正在创建一个带有复选框列和文本列的简单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,但我认为在继续之前让它以基本方式工作会更好。
我不是试图以编程方式设置检查状态,而是让用户选择然后在各种其他事件处理程序中使用该选择。
答案 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)
表格本身可能设置为只读,即使复选框列不是表格设置也会覆盖列设置。