要么我不理解构造函数执行的顺序,要么不理解DataGridViews上ReadOnly字段的优先级。
class Form1 : Form
{
public Form1()
{
DataGridView gv = new DataGridView();
Controls.Add(gv);
gv.Columns.Add("foo","foo");
gv.Rows[gv.Rows.Add()].ReadOnly = true;
gv[0,0] = new DerivedCell();
//gv[0,0].ReadOnly = false;
}
}
class DerivedCell : DataGridViewTextBoxCell
{
public DerivedCell()
{
ReadOnly = false;
}
}
如果我想让单元格可编辑,则需要注释行,但我不明白为什么在DerivedCell ctor中没有注意到这一点。
答案 0 :(得分:0)
如果你这样做
DataGridViewTextBoxCell foo = new DerivedCell();
gv[0, 0] = foo;
您会看到第一行后foo.ReadOnly
为false
,第二行后为true
。因此,DataGridView的索引器就是这样做的(将新单元格的ReadOnly属性设置为旧单元格具有的任何值)。不要问我原因。