Establecer DataGridView.DefaultCellStyle.NullValue en nulo en tiempo de diseño genera un error al agregar filas en tiempo de ejecución

StackOverflow https://stackoverflow.com/questions/48271

  •  09-06-2019
  •  | 
  •  

Pregunta

En Visual Studio 2008

  • agregar un nuevo DataGridView a un formulario
  • Editar columnas
  • Agregue una nueva DataGridViewImageColumn
  • Abra el CellStyle Builder de esta columna (propiedad DefaultCellStyle)
  • Cambie NullValue de System.Drawing.Bitmap a nulo
  • Intente agregar una nueva fila a DataGridView en Runtime (dataGridView1.rows.add ();)
  • Obtienes este error:System.FormatException:El valor formateado de la celda tiene un tipo incorrecto.

Si vuelve a cambiar NullValue a System.Drawing.Bitmap (como estaba), seguirá recibiendo el mismo error al agregar una fila.

Si configura NullValue en tiempo de ejecución en lugar de en tiempo de diseño, no obtendrá ningún error.(dataGridView1.Columns[0].DefaultCellStyle.NullValue = nulo;)

¿Podrías decirme por qué es eso?

¿Fue útil?

Solución

Esto bien puede ser un error del diseñador;Si echa un vistazo al archivo .designer.cs (tal vez haciendo una diferencia antes y después de establecer NullValue en nulo), debería poder ver el código que genera.

Otros consejos

Kronoz tiene razón.Después de configurarlo en tiempo de diseño, agrega esto a .designer.cs:

dataGridViewCellStyle1.NullValue = "nulo";

si modifico "nulo" a nulo entonces funciona bien.Revisé DataGridViewCellStyle.NullValue set_NullValue(Object) y get_NullValue con reflector y creo que un valor de cadena no debería generar ningún error aquí.

De todos modos, tenga cuidado con esto y si desea configurar el tiempo de diseño, no olvide modificar .design.cs.

Cambie NullValue de System.Drawing.Bitmap a nulo

Cuando ingresa 'nulo' en el campo NullValue en el Diseñador, está especificando el valor de cadena "nulo".La única forma de establecer NullValue en un valor que no sea una cadena es configurarlo mediante programación o modificando el código del diseñador usted mismo.

La casilla de verificación no puede tener un valor de cadena.No establezca ningún valor predeterminado en el cuadro de diálogo de propiedades del IDE.Tenía escrito "Vacío" en la propiedad RowsDefaultCellStyle.Format y eso causó el error.Fue autoinfligido.Como solución, estaba intentando establecer el estado de la casilla de verificación en desmarcado, pero solo necesitaba eliminar el valor de la cadena.

Descubrí que es mejor si simplemente eliminas el elemento del diseñador por completo desde el área Formato y el área de valor nulo predeterminado.Luego lo devuelve al valor nulo real.Voy a intentar configurarlo en la sección de inicio, lejos de la basura generada por el diseñador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top