Visual Basic.NET - Suceso extraño con mi DataGriedView

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Suceso extraño con mi DataGriedView

Publicado por carlos (36 intervenciones) el 19/09/2014 21:11:49
Hola, a ver si me podéis ayudar:

Tengo un Formulario principal que solo tiene un botón. Presionándolo llama a un Form llamado Pedidos. En ese Form pedidos tengo un DataGriedView. Al mostrar la información quiero poner el Backlight de una celda en rojo y lo hace bien (pero solo la primera vez que entro a este form).
Cuando cierro el Form Pedidos y luego lo vuelvo a abrir, esa celda ya no me aparece en rojo. ¿Cómo puede ser si ejecuta justo el mismo código y he comprobado mediante Debug que pasa por la línea que lo debería poner en rojo? Aquí os dejo el codigo:

FORMULARIO PRINCIPAL:

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Pedidos.ShowDialog()
End Sub

End Class


FORMULARIO PEDIDOS

Public Class Pedidos

Private Sub Pedidos_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cargardatagrid()
End Sub

Function CargarDataGrid() As String

TablaPedidos.Clear()
BindingSourcePedidos = New BindingSource()

Try

MyAdapterPedidos = New MySqlDataAdapter("Select * from funda ", Conexion)
SqlCommandBuilderPedidos = New MySqlCommandBuilder(MyAdapterPedidos)
MyAdapterPedidos.Fill(TablaPedidos)

BindingSourcePedidos.DataSource = TablaPedidos
DataGridView1.DataSource = BindingSourcePedidos
BindingNavigator1.BindingSource = BindingSourcePedidos

DataGridView1.Item(5, 1).Style.BackColor = Color.Red 'PONEMOS UNA CELDA EN COLOR ROJO

Return True

Catch ex As Exception
MsgBox("Error", MessageBoxIcon.Error)
Return False
End Try

End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Cerrar_Formulario.Click
MyAdapterPedidos.Update(TablaPedidos)
Me.Close()

End Sub

End Class


MODULO GENERAL DE VARIABLES

Module General

Public MyAdapterPedidos As New MySqlDataAdapter
Public TablaPedidos As New DataTable
Public DataSet As New DataSet
Public BindingSourcePedidos As BindingSource
Public SqlCommandBuilderPedidos As MySqlCommandBuilder
Friend Conexion As MySqlConnection


End Module

Os agradezco cualquier ayuda
Saludos,
Captura
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Suceso extraño con mi DataGriedView

Publicado por Miguel (476 intervenciones) el 20/09/2014 05:58:36
Hola, prueba colocando el código en el evento Load del formulario (después de la función)...
Saludos,
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Suceso extraño con mi DataGriedView

Publicado por carlos (36 intervenciones) el 20/09/2014 13:13:39
Hola

No sé muy bien que código comentas que pruebe a poner en el Load, me imagino que será el código de poner en rojo una celda. Lo he hecho como visabajo y sigue igual. Solo la primera vez que entro al Form Pedidos aparece la celda en rojo. Pero si cierro y vuelvo a abrir.... ya no funciona:

Private Sub Pedidos_Load(sender As Object, e As EventArgs) Handles MyBase.Load

cargardatagrid()
DataGridView1.Item(5, 1).Style.BackColor = Color.Red 'PONEMOS UNA CELDA EN COLOR ROJO

End Sub
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Suceso extraño con mi DataGriedView

Publicado por carlos (36 intervenciones) el 20/09/2014 13:25:44
Hola.
He puesto un timer de 100 milisegundos antes de poner en rojo la celda y funciona bien, pero no encuentro el sentido. ¿Porqué hay que dejar un tiempo antes de colorear una celda del Datagried y además solo a partir de la segunda vez que entro a ese formulario? La primera vez si funciona sin timers. Me funciona pero me parece una solución un poco chapuza andar con timer. ?Alguien sabe por que ocurre?

Function CargarDataGrid() As String

TablaPedidos.Clear()
BindingSourcePedidos = New BindingSource()

Try

MyAdapterPedidos = New MySqlDataAdapter("Select * from funda ", Conexion)
SqlCommandBuilderPedidos = New MySqlCommandBuilder(MyAdapterPedidos)
MyAdapterPedidos.Fill(TablaPedidos)

BindingSourcePedidos.DataSource = TablaPedidos
DataGridView1.DataSource = BindingSourcePedidos
BindingNavigator1.BindingSource = BindingSourcePedidos

Timer1.Enabled = True

Return True

End Try

End Function



Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
DataGridView1.Item(5, 1).Style.BackColor = Color.Red 'Ponemos una celda color rojo
Timer1.Enabled = False
End Sub
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