none
ForColor de varias rows en una sola línea en datagridview vb.net RRS feed

  • Pregunta

  • Hola a todos:

    Tengo varios datagridview y para reducir el código que tengo en sus propiedades, querría saber por favor como puedo reducir el mismo, por ejemplo, la propiedades BackColor que afectan a varias líneas, ponerlo en una sola.

    Ejemplo:

     'Pintamos las filas que nos interesan
                    .Rows(0).DefaultCellStyle.BackColor = Color.Maroon
                    .Rows(1).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(9).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(29).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(32).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(47).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(67).DefaultCellStyle.BackColor = Color.SlateGray
                    .Rows(68).DefaultCellStyle.BackColor = Color.SlateGray

    Gracias a todos.

    Gemma


    domingo, 11 de octubre de 2015 6:39

Respuestas

  • "gemma_campillo" preguntó:

    > Tengo varios datagridview y para reducir el código que tengo en sus propiedades,
    > querría saber por favor como puedo reducir el mismo, por ejemplo, la propiedades
    > BackColor que afectan a varias líneas, ponerlo en una sola.

    A bote pronto, lo único que se me ocurre es que englobes los índices correspondientes a aquellas filas de un mismo color en una matriz, la cual se la pasarás a un procedimiento que se encargue de establecer el valor de la propiedad BackColor:

        ''' <summary>
        ''' Establece el valor de la propiedad BackColor de todas las
        ''' filas de un control DataGridView correspondientes al array
        ''' de índices especificado.
        ''' </summary>
        ''' <param name="indexes">Matriz con los índices de las filas cuya propiedad BackColor se desea establecer.</param>
        ''' <param name="backColor">Color que se asignará a la propiedad BackColor.</param>
        Private Sub SetBackColor(indexes As Integer(), backColor As Color)
    
            For Each n As Integer In indexes
                DataGridView1.Rows(n).DefaultCellStyle.BackColor = backColor
            Next
    
        End Sub

    Cuando quieras establecer el valor de la propiedad BackColor, ejecutarías:

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
      ' Pintamos las filas que nos interesan SetBackColor(New Integer() {0}, Color.Maroon) SetBackColor(New Integer() {1, 9, 29, 32, 47, 67, 68}, Color.SlateGray) End Sub

    No sé si se reducirán las líneas de código, pero al menos cumple con lo que demandas en tu pregunta: las propiedades BackColor que afectan a varias líneas, ponerlas en una sola. ;-)

    Por cierto, ayer te envié un mensaje y me ha sido devuelto tres veces por tu servidor. ¿Algún problema con el servidor?


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    domingo, 11 de octubre de 2015 7:33
    Moderador

Todas las respuestas

  • "gemma_campillo" preguntó:

    > Tengo varios datagridview y para reducir el código que tengo en sus propiedades,
    > querría saber por favor como puedo reducir el mismo, por ejemplo, la propiedades
    > BackColor que afectan a varias líneas, ponerlo en una sola.

    A bote pronto, lo único que se me ocurre es que englobes los índices correspondientes a aquellas filas de un mismo color en una matriz, la cual se la pasarás a un procedimiento que se encargue de establecer el valor de la propiedad BackColor:

        ''' <summary>
        ''' Establece el valor de la propiedad BackColor de todas las
        ''' filas de un control DataGridView correspondientes al array
        ''' de índices especificado.
        ''' </summary>
        ''' <param name="indexes">Matriz con los índices de las filas cuya propiedad BackColor se desea establecer.</param>
        ''' <param name="backColor">Color que se asignará a la propiedad BackColor.</param>
        Private Sub SetBackColor(indexes As Integer(), backColor As Color)
    
            For Each n As Integer In indexes
                DataGridView1.Rows(n).DefaultCellStyle.BackColor = backColor
            Next
    
        End Sub

    Cuando quieras establecer el valor de la propiedad BackColor, ejecutarías:

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
      ' Pintamos las filas que nos interesan SetBackColor(New Integer() {0}, Color.Maroon) SetBackColor(New Integer() {1, 9, 29, 32, 47, 67, 68}, Color.SlateGray) End Sub

    No sé si se reducirán las líneas de código, pero al menos cumple con lo que demandas en tu pregunta: las propiedades BackColor que afectan a varias líneas, ponerlas en una sola. ;-)

    Por cierto, ayer te envié un mensaje y me ha sido devuelto tres veces por tu servidor. ¿Algún problema con el servidor?


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    domingo, 11 de octubre de 2015 7:33
    Moderador
  • Hola maestro:

    Te había contestado hace 15 minutos pero la respuesta no ha salido.

    Bueno, tengo graves problemas con el servidor que está en Valladolid porque he llegado a la cuota de transferencia de 25 Gb y no me deja recibir ningún correo ni enviarlos. En principio hasta el Martes voy ha estar en esta situación ya que estos están también de fiesta. Estoy buscando por Internet haber si hay alguna manera de solucionarlo porque lo que me preocupa es que se pierdan correos ahora que está lanzado el software.

    Bueno, respecto a la pregunta de hoy ya está solucionado y probado, era eso lo que necesitaba, como siempre me lees el pensamiento y la aciertas, ahora aparte de ser maestro eres clarividente.

    Mira, tengo un correo en gmail que casi no lo utilizo y nos puede servir: gemma.campillo.casteraARROBAgmail.com

    Muchas gracias como siempre por tu inestimable ayuda.

    Un fuerte abrazo.

    Gemma

    domingo, 11 de octubre de 2015 8:14