none
Como hacer que parpadee una celda de un datagridview. RRS feed

  • Pregunta

  • Hola a tod@s, necesito ayuda para poder hacer que una celda de un datagridview parpadee con dos colores. Gracias de antemano a tod@s los que me puedan ayudar y los que no. Un saludo.
    miércoles, 28 de junio de 2017 9:32

Respuestas

  • Buenas Revivaly

    Pues para que parpadee, tendrías que crear un timer con el intervalo que te interese el parpadeo, y en su evento tick pones el siguiente codigo:

    private void timer1_Tick(object sender, EventArgs e)
    {
        //X dentro de Rows[x] es la fila que quieres
        //Y dentro de Cells[y] es la columna dentro de la fila X
        if(nColor == 0)
        {
            dbGrid.Rows[x].Cells[y].DefaultCellStyle.BackColor = Color.Red;
            nColor = 1;
        }
        else if(nColor == 1)
        {
            dbGrid.Rows[x].Cells[y].DefaultCellStyle.BackColor = Color.YellowGreen;
            nColor = 0;
        }
    }

    luego solo tienes que definir una variable miembro en el formulario para almacenar el ultimo color aplicado:

    int nColor = 0;

    Cada vez que se produzca el evento Tick del timer, la celda que hayas puesto cambiara de color. En caso de querer más colores, puedes ir añadiendo casos al if else.

    Atte.


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    miércoles, 28 de junio de 2017 9:59
  • Con solo pedirlo ya lo tienes!! xD

    Private Sub timer1_Tick(sender As Object, e As EventArgs)
    	'X dentro de Rows[x] es la fila que quieres
    	Y dentro de Cells[y] es la columna dentro de la fila X'
    	If nColor = 0 Then
    		dbGrid.Rows(x).Cells(y).DefaultCellStyle.BackColor = Color.Red
    		nColor = 1
    	ElseIf nColor = 1 Then
    		dbGrid.Rows(x).Cells(y).DefaultCellStyle.BackColor = Color.YellowGreen
    		nColor = 0
    	End If
    End Sub

    y para la definicion:

    Dim nColor As Integer = 0

    P.D: lo he traducido con Code Converter 

    Atte


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    miércoles, 28 de junio de 2017 14:12
  • Me alegro de oirlo!

    Si no es molestia, marca como respuesta la contestación que ha resuelto tu problema, para que otros usuarios que entren al foro buscando algo similar sepan rápidamente que pueden probar.

    Atte


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    • Marcado como respuesta Revivaly martes, 4 de julio de 2017 7:52
    miércoles, 28 de junio de 2017 14:42

Todas las respuestas

  • Buenas Revivaly

    Pues para que parpadee, tendrías que crear un timer con el intervalo que te interese el parpadeo, y en su evento tick pones el siguiente codigo:

    private void timer1_Tick(object sender, EventArgs e)
    {
        //X dentro de Rows[x] es la fila que quieres
        //Y dentro de Cells[y] es la columna dentro de la fila X
        if(nColor == 0)
        {
            dbGrid.Rows[x].Cells[y].DefaultCellStyle.BackColor = Color.Red;
            nColor = 1;
        }
        else if(nColor == 1)
        {
            dbGrid.Rows[x].Cells[y].DefaultCellStyle.BackColor = Color.YellowGreen;
            nColor = 0;
        }
    }

    luego solo tienes que definir una variable miembro en el formulario para almacenar el ultimo color aplicado:

    int nColor = 0;

    Cada vez que se produzca el evento Tick del timer, la celda que hayas puesto cambiara de color. En caso de querer más colores, puedes ir añadiendo casos al if else.

    Atte.


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    miércoles, 28 de junio de 2017 9:59
  • Perdón por no haber escrito bien la pregunta, pero lo necesito para Vb.net. Estoy intentando hacerlo en base al código que me has pasado que me resulta muy interesante. Gracias.
    miércoles, 28 de junio de 2017 13:57
  • Con solo pedirlo ya lo tienes!! xD

    Private Sub timer1_Tick(sender As Object, e As EventArgs)
    	'X dentro de Rows[x] es la fila que quieres
    	Y dentro de Cells[y] es la columna dentro de la fila X'
    	If nColor = 0 Then
    		dbGrid.Rows(x).Cells(y).DefaultCellStyle.BackColor = Color.Red
    		nColor = 1
    	ElseIf nColor = 1 Then
    		dbGrid.Rows(x).Cells(y).DefaultCellStyle.BackColor = Color.YellowGreen
    		nColor = 0
    	End If
    End Sub

    y para la definicion:

    Dim nColor As Integer = 0

    P.D: lo he traducido con Code Converter 

    Atte


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    miércoles, 28 de junio de 2017 14:12
  • Gracias!!! Ya he conseguido lo que quería.
    miércoles, 28 de junio de 2017 14:35
  • Me alegro de oirlo!

    Si no es molestia, marca como respuesta la contestación que ha resuelto tu problema, para que otros usuarios que entren al foro buscando algo similar sepan rápidamente que pueden probar.

    Atte


    No olvides votar si mi comentario te ha ayudado y marcarlo como respuesta si ha sido la solución!

    • Marcado como respuesta Revivaly martes, 4 de julio de 2017 7:52
    miércoles, 28 de junio de 2017 14:42