none
Cambiar Altura si Row es vacia RRS feed

  • Pregunta

  • Hola a todos

    Os comento un poco lo que quiero hacer pero no doy con el codigo. Tengo un datagridview y lo que pretendo es que las rows vacias tengan un altura determinada. He estado viendo algunos articulos pero no doy con la solucion.

    El codigo que he escrito es:

    For Each Row As DataGridViewRow In BALANCE_SHEET_HistoricDataGridView.Rows
    
                    If Row.ToString = " " Then
                        .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
                        .Height = 2
                    End If
                Next

    No se donde meto la pata, pero doesn´t work.

    Un saludo

    Francisco


    • Editado Frank0401 sábado, 22 de noviembre de 2014 11:50
    sábado, 22 de noviembre de 2014 11:49

Todas las respuestas

  • Un formulario, y un datagridview con tres columnas de textboxes

    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim rnd As New Random
            DataGridView1.Rows.Add(123, "aaa", DateTime.FromOADate(rnd.NextDouble() * 1000 + 40000))
            DataGridView1.Rows.Add(456, "bbb", DateTime.FromOADate(rnd.NextDouble() * 1000 + 40000))
            DataGridView1.Rows.Add("", "", "")
            DataGridView1.Rows.Add(789, "ccc", DateTime.FromOADate(rnd.NextDouble() * 1000 + 40000))
            DataGridView1.Rows.Add()
            DataGridView1.Rows.Add(12, "ddd", DateTime.FromOADate(rnd.NextDouble() * 1000 + 40000))
            DataGridView1.Rows.Add()
            DataGridView1.Rows.Add(345, "eee", DateTime.FromOADate(rnd.NextDouble() * 1000 + 40000))
            DataGridView1.Rows.Add()
    
            For Each r As DataGridViewRow In DataGridView1.Rows
                Dim vacío As Boolean = True
    
                If r.IsNewRow Then Continue For
    
                For Each c As DataGridViewCell In r.Cells
                    If Not c.Value Is Nothing Then
                        vacío = False
                        Exit For
                    End If
                Next
    
                If vacío Then
                    r.Height \= 2
                End If
            Next
    
        End Sub
    End Class
    
    

    Fijate que vacío significa que el objeto que contiene cada celda es Nothing.
    Cuando detecto que la fila está vacía, le modifico su altura.

    sábado, 22 de noviembre de 2014 13:01
  •  Private Sub BALANCE_SHEET_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: This line of code loads data into the 'AerospaceDataSet.BALANCE_SHEET_Historic' table. You can move, or remove it, as needed.
            Me.BALANCE_SHEET_HistoricTableAdapter.Fill(Me.AerospaceDataSet.BALANCE_SHEET_Historic)
    
            For Each row As DataGridViewRow In BALANCE_SHEET_HistoricDataGridView.Rows
    
                Dim vacío As Boolean = True
    
                If row.IsNewRow Then Continue For
    
                For Each cell As DataGridViewCell In row.Cells
                    If Not cell.Value Is Nothing Then
                        vacío = False
                        Exit For
                    End If
                Next
    
                If vacío Then
                    row.Height = 2
                End If
            Next
        End Sub

    Gracias por tu tan rapida respuesta Waler MDV, pero al implementar la solucion no me da ningun resultado, supongo que estoy hacienda algo mal.

    Te dejo el codigo conforme lo tengo a ver si entre los dos podemos sacarlo adelante.

    Un saludo

    Francisco

     
    sábado, 22 de noviembre de 2014 15:23