在派生的DataGridViewCells上设置ReadOnly属性

时间:2010-08-04 20:56:24

标签: .net winforms datagridview

要么我不理解构造函数执行的顺序,要么不理解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中没有注意到这一点。

1 个答案:

答案 0 :(得分:0)

如果你这样做

DataGridViewTextBoxCell foo = new DerivedCell();
gv[0, 0] = foo;

您会看到第一行后foo.ReadOnlyfalse,第二行后为true。因此,DataGridView的索引器就是这样做的(将新单元格的ReadOnly属性设置为旧单元格具有的任何值)。不要问我原因。