2008-11-06 46 views
10

Tengo problemas con el siguiente fragmento de código. Cuando voy a través con el depurador consigo una excepción cuando se trata de la línea siguiente:La columna no se puede agregar porque su propiedad CellType es una excepción nula

dgvCalls.Columns.Insert(1, msisnnColumn); 

me sale una excepción:

columna no se puede añadir debido a su propiedad celltype es nulo.

Curiosamente, he creado el mismo procedimiento para algunos otros DataGridViews y funcionó bien.

if (!(dgvCalls.Columns.Contains("DirectionImage"))) 
       { 
        directionIconColumn = new DataGridViewImageColumn(); 
        directionIconColumn.Name = "DirectionImage"; 
        directionIconColumn.HeaderText = ""; 
        dgvCalls.Columns.Insert(0, directionIconColumn); 
        directionIconColumn.CellTemplate = new DataGridViewImageCell(); 
       } 
       if (!(dgvCalls.Columns.Contains("msisndColumn"))) 
       { 
        msisnnColumn = new DataGridViewColumn(); 
        msisnnColumn.Name = "msisndColumn"; 
        msisnnColumn.HeaderText = "Klic"; 
        dgvCalls.Columns.Insert(1, msisnnColumn); 
        msisnnColumn.CellTemplate = new DataGridViewTextBoxCell(); 
       } 

¿Alguna sugerencia?

+0

Puede mostrar el código en un formato más fácil de leer resaltándolo y haciendo clic en el pequeño icono 0101010 justo encima del área de texto de edición. – DOK

Respuesta

17
dgvCalls.Columns.Insert(1, msisnnColumn); 
msisnnColumn.CellTemplate = new DataGridViewTextBoxCell(); 

Intente voltear esas dos líneas. Eso podría hacer el truco.

+0

¡Gracias! Funciona. Me pregunto por qué funciona en la otra forma donde el orden es diferente. –

+1

El problema es que, dado que solo está asignando msisnnColumn a una nueva DataGridViewColumn(), no sabe qué CellType desea, por lo que simplemente lo deja nulo. Por lo tanto, cuando fuiste a hacer la inserción, estalló. Sin embargo, si primero asigna CellTemplate a TextBoxCell, sabe lo que quiere. – BFree

Cuestiones relacionadas