Visual Basic.NET - Error System.NullReferenceException en DataGridView

   
Vista:

Error System.NullReferenceException en DataGridView

Publicado por Victor (5 intervenciones) el 24/01/2018 01:07:21
Hola a tod@s,

Estoy empezando a programar en VB.NET, utilizando el Visual Studio 2017.
Tengo un formulario con un TabControl, que tiene dos pestañas con un DataGridView (DGV) cada una. Ambos DataGridView son iguales y cargan la misma información (configuré el primer DGV e hice un Copy Paste para el segundo, con lo que la configuración es la misma para ambos). Cuando cargo el formulario, relleno el DGV de la primera pestaña en el evento Load del Form (mediante el DataSource), y también formateo las columnas (nombre del HeaderText y ancho de las columnas). Por código, cuando selecciono la segunda pestaña (evento TabControl.Selected), cargo de la misma manera el segundo DGV y formateo también de la misma manera (mismo código) el segundo DGV. No obstante, cuando voy a ajustar el ancho de la primera columna me salta el error "System.NullReferenceException: Referencia a objeto no establecidad como instancia de un objeto."... El error indica que el objeto es nulo, pero es un control que tengo en el formulario, y antes de ajustar el ancho de las columnas oculto varias de las mismas que no quiero que se vean, y también asigno el nombre de las cabeceras de las columnas. El código es el mismo que usa el DGV de la primera pestaña pero con esa funciona perfectamente. Llevo varios días devanándome los sesos mirando por internet pero no consigo encontrar el origen del error...
Este es el procedimiento que formatea el DGV:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Public Sub LlenarYFormatearTitulosGridView(GridView As DataGridView)
    With GridView
        'Ocultamos las columnas con información no relevante
        .Columns(0).Visible = False
        .Columns(8).Visible = False
        .Columns(9).Visible = False
        .Columns(10).Visible = False
        .Columns(11).Visible = False
        .Columns(12).Visible = False
        .Columns(13).Visible = False
 
        .Columns(1).HeaderText = "Fecha entrada"
        .Columns(1).Width = 70             '<-- El error me lo da en esta línea
 
        .Columns(2).HeaderText = "Cantidad"
        .Columns(2).Width = 50
 
        .Columns(3).HeaderText = "P/N"
        .Columns(3).Width = 65
 
        .Columns(4).HeaderText = "Descripción"
        .Columns(4).Width = 230
 
        .Columns(5).HeaderText = "¿Es repuesto?"
        .Columns(5).Width = 55
 
        .Columns(6).HeaderText = "Equipo al que pertenece"
        .Columns(6).Width = 78
 
        .Columns(7).HeaderText = "Fabricante"
    End With
 
End Sub

He pensado que pudiera ser un problema del evento del TabControl que uso para cargar los datos del DGV (TabControl.Selected), que todavía no lo tiene disponible para mostrar y por eso no puede ajustar el ancho no sé, agradecería ideas de dónde puede estar el problema....

Muchas gracias de antemano.

Víctor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error System.NullReferenceException en DataGridView

Publicado por Miguel (476 intervenciones) el 24/01/2018 14:57:39
Pues el código debería funcionar bien. De hecho, en la línea anterior se está usando la misma columna (index 1). Coloca un breakpoint en esa línea y debuguea para ver porqué se convierte a Null.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error System.NullReferenceException en DataGridView

Publicado por Víctor (5 intervenciones) el 30/01/2018 18:02:17
Pues sí, pero no termino de encontrarle sentido... he colocado un breakpoint pero no sé cómo ver cómo y cuándo se convierte a Null. Voy pulsando F8 y las lineas previas las ejecuta correctamente, pero cuando le toca ejecutar la que indico en el primer mensaje, salta ese error...
¿A alguien más se le ocurre dónde puede estar el problema?

Gracias....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error System.NullReferenceException en DataGridView

Publicado por Victor (5 intervenciones) el 01/02/2018 00:43:59
Hola, he estado indagando y debugueando el código, y lo que veo es que cuando cargo el primer DGV de la primera pestaña, la propiedad 'Displayed' del elemento (1) del DGV aparece como True en la ventana de Variables Locales, mientras que cuando selecciono la segunda pestaña y en el evento Selected llamo al procedimiento, la propiedad 'Displayed' aparece como False... Alguien sabría decirme en qué momento el DGV (o la columna correspondiente) pasa a estar visible? Os sonará raro, pero dependiendo de dónde coloque el Breakpoint, hay veces que no me da error... está claro que hay algo que no hago bien, pero no termino de ver cómo identificar la causa del problema...
Cualquier aportación será bienvenida
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error System.NullReferenceException en DataGridView

Publicado por Victor (5 intervenciones) el 01/02/2018 11:44:50
Bueno, pues era simplemente para informaros que ya he conseguido solucionar el problema. Al final estaba en el evento del TabControl que estaba utilizando para formatear el DGV (TabControl.Selected), que todavía no tenía mostrado el control y parece que no permite asignarle ningún valor a las propiedades 'gráficas'. He optado por usar el evento TabControl.SelectedIndexChanged, que por el resultado parece es lanzado posteriormente al 'Selected' y ya tiene mostrado el Control para poder modificar sus propiedades gráficas.

Gracias en cualquier caso por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad