2010-08-04 2 views
1

Cela signifie soit que je ne comprends pas l'ordre d'exécution du constructeur, soit que je ne comprends pas la priorité des champs ReadOnly sur DataGridViews.Définition de la propriété ReadOnly sur les DataGridViewCells dérivées

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; 
    } 
} 

La ligne commentée est nécessaire si je veux faire de la cellule modifiable, mais je ne comprends pas pourquoi ce n'est pas pris en charge dans le cteur de DerivedCell.

Répondre

0

Si vous faites cela au lieu

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

vous verrez que foo.ReadOnly est false après la première ligne, mais true après la deuxième ligne. C'est donc l'indexeur de DataGridView qui le fait (définit la propriété ReadOnly de la nouvelle cellule à la valeur de l'ancienne cellule). Ne me demandez pas pourquoi.

Questions connexes