Principales respuestas
Style.BackColor en evento LOAD no me pinta nada

Pregunta
-
Buenas . En mi evento load tengo este Sub que realiza el pintado de las campos que tienen X pero no me pinta nada hasta darle listar y ahi recien se me activa ... que estoy haciendo mal
Sub PINTAR()
For Rows As Integer = 0 To DgvMes1.RowCount - 1
For Columnas As Integer = 0 To DgvMes1.ColumnCount - 1
If DgvMes1.Item(Columnas, Rows).Value().ToString = "X" Then
DgvMes1.Item(Columnas, Rows).Style.BackColor = Color.ForestGreen
End If
Next
Next
For Rows As Integer = 0 To DgvMes2.RowCount - 1
For Columnas As Integer = 0 To DgvMes2.ColumnCount - 1
If DgvMes2.Item(Columnas, Rows).Value().ToString = "X" Then
DgvMes2.Item(Columnas, Rows).Style.BackColor = Color.ForestGreen
End If
Next
Next
End Sub
Pasa los puntos prro v:
Respuestas
-
Hola:
Podrías probar ese código en el evento Shown del formulario:
Que ocurre cuando el formulario es desplegado por primera vez...
Saludos desde Monterrey, Nuevo León, México!!!
- Marcado como respuesta D A M N 1 S e l f miércoles, 23 de agosto de 2017 21:17
Todas las respuestas
-
Supongo que es porque aún no está creado el DGV, prueba colocar el mismo código una vez termine la carga en el evento que sea, ej luego de DgvMes1.DataSource = (.....)
- Editado Marcelo PF miércoles, 23 de agosto de 2017 21:05
-
Hola:
Podrías probar ese código en el evento Shown del formulario:
Que ocurre cuando el formulario es desplegado por primera vez...
Saludos desde Monterrey, Nuevo León, México!!!
- Marcado como respuesta D A M N 1 S e l f miércoles, 23 de agosto de 2017 21:17
-
-
Hola:
Pero entonces si te funciona o no?, ya no entendí.
De entrada en el LOAD dudo que funciones puesto que el formulario apenas se esta cargando los controles aun no estas inicializados...
De echo, deberías de buscar un evento del mismo DataGridView para poder aplicar el formato, por ejemplo:
Que se dispara cuando un nuevo Row es creado, pero si usas este evento entonces tendrías que cambiar tu código, otra cosa que no mencionas es si los datos están ligado a una fuente de datos, osea si usas la propiedad DataSource del control, por que de ser así, entonces deberás de usar el evento:
DataGridView.DataBindingComplete Event
Que se dispara cada vez que las propiedades DataSource, DataMember o BindingContext cambian, yo probaría con este ultimo.
Espero te sea de utilidad.
Saludos desde Monterrey, Nuevo León, México!!!
-
Fe de ratas
el evento Shown me funciona perfectamente , me di cuenta que no me cargaba mi segundo Tab Mes2 y realize esto
Private Sub frm_PlantillaMensual_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
ActualizarTotalesLocal()
End Sub
Private Sub TabControl1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.Click
ActualizarTotalesLocal()
End SubPero se da la sensacion que demora mucho ... al cargar Julio
http://recordit.co/xmG7dKlB7m
Pasa los puntos prro v:
- Editado D A M N 1 S e l f miércoles, 23 de agosto de 2017 22:16
-
Solo para confirmar luego de echa la carga del DataGrieview
Dgv.DataSource = Tabla 'DataTable en este caso For Each row As DataGridViewRow In Dgv.Rows For i As Integer = 0 To Dgv.Columns.Count - 1 If Convert.ToString(row.Cells(i).Value) = "X" Then row.Cells(i).Style.BackColor = Color.ForestGreen End If Next Next
Tiene un delay al pintar si
Saludos
-
Si tengo un delay como puedo mejorarlo este es mi codigo
Sub ActualizarTotalesLocal()
Dim c1, c2, x1, x2 As Integer
c1 = 0 : c2 = 0
x1 = 0 : x2 = 0
For r As Integer = 0 To DgvMes1.RowCount - 1
For c As Integer = 0 To DgvMes1.ColumnCount - 1
If DgvMes1.Item(c, r).Value().ToString = "X" Then
DgvMes1.Rows(r).Cells(c).Style.BackColor = Color.ForestGreen
c1 = c1 + 1
'ElseIf DgvMes1.Item(Columnas, Rows).Value().ToString = "1" Then
' x1 = x1 + 1
End If
Next
DgvTotales.Rows(r).Cells(0).Value = c1 : c1 = 0
' DgvMes1.Rows(Rows).Cells(33).Value = c1 : DgvTotales.Rows(Rows).Cells(0).Value = c1 : c1 = 0
' DgvMes1.Rows(Rows).Cells(34).Value = x1 : x1 = 0
Next
For r As Integer = 0 To DgvMes2.RowCount - 1
For c As Integer = 0 To DgvMes2.ColumnCount - 1
If DgvMes2.Item(c, r).Value().ToString = "X" Then
DgvMes2.Rows(r).Cells(c).Style.BackColor = Color.ForestGreen
c2 = c2 + 1
'ElseIf DgvMes2.Item(Columnas, Rows).Value().ToString = "1" Then
' x2 = x2 + 1
End If
Next
DgvTotales.Rows(r).Cells(1).Value = c2 : c2 = 0
'DgvMes2.Rows(Rows).Cells(33).Value = c2 : DgvTotales.Rows(Rows).Cells(1).Value = c2 : c2 = 0 'CANTIDAD X
'DgvMes2.Rows(Rows).Cells(34).Value = x2 : x2 = 0 'CANTIDAD DE 1
Next
For Rows As Integer = 0 To DgvTotales.RowCount - 1
For Columnas As Integer = 0 To DgvTotales.ColumnCount - 1
DgvTotales.Item(2, Rows).Value = DgvTotales.Item(0, Rows).Value() + DgvTotales.Item(1, Rows).Value()
Next
Next
DgvMes1.ClearSelection() : DgvMes2.ClearSelection()
End Sub
Pasa los puntos prro v:
-
-