none
Alterando cor de linhas datagridview RRS feed

  • Pergunta

  • Bom dia, Pessoal.

    Tenho um datagridview com 3 colunas uma delas é de combobox com 4 opçoes de escolha: Alta, média, Baixa e nao se aplica.

    outra coluna e de texto, gostaria de saber como alterar as cores das textbox de acordo com a escolha da combobox.

    por exemplo: se a escolha na combobox for "alta" a textbox fique vermelha.

                        se a escolha na combobox for "baixa" a textbox fique verde.

    Obrigado.

    quarta-feira, 6 de abril de 2016 12:35

Respostas

  • Public Class Form1
    
        Public Sub DataGrid()
            Dim col1 = New DataGridViewComboBoxColumn() With { _
                 .Name = "Prioridade", _
                .HeaderText = "Prioridade" _
            }
            col1.Items.AddRange(New Object() {"Alta", "Média", "Baixa"})
            Dim col2 = New DataGridViewTextBoxColumn()
            dataGridView1.Columns.Add(col1)
            dataGridView1.Columns.Add(col2)
            AddHandler dataGridView1.CellValueChanged, AddressOf dataGridView1_CellValueChanged
            AddHandler dataGridView1.CurrentCellDirtyStateChanged, AddressOf dataGridView1_CurrentCellDirtyStateChanged
        End Sub
    
        Private Sub dataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs)
            If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 Then
                Dim valor As Object = dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
                Select Case valor.ToString()
                    Case "Alta"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.Wheat
                        Exit Select
                    Case "Média"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.RoyalBlue
                        Exit Select
                    Case "Baixa"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.Aquamarine
                        Exit Select
                End Select
            End If
        End Sub
    
        Private Sub dataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs)
            If dataGridView1.IsCurrentCellDirty Then
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DataGrid()
        End Sub
    End Class
    Att,

    Antero Marques
    _______________________________________________________________________________ 

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    • Editado Antero Marques quarta-feira, 6 de abril de 2016 13:53
    • Marcado como Resposta Marcos SJ quarta-feira, 6 de abril de 2016 16:21
    quarta-feira, 6 de abril de 2016 13:51

Todas as Respostas

  • Public Class Form1
    
        Public Sub DataGrid()
            Dim col1 = New DataGridViewComboBoxColumn() With { _
                 .Name = "Prioridade", _
                .HeaderText = "Prioridade" _
            }
            col1.Items.AddRange(New Object() {"Alta", "Média", "Baixa"})
            Dim col2 = New DataGridViewTextBoxColumn()
            dataGridView1.Columns.Add(col1)
            dataGridView1.Columns.Add(col2)
            AddHandler dataGridView1.CellValueChanged, AddressOf dataGridView1_CellValueChanged
            AddHandler dataGridView1.CurrentCellDirtyStateChanged, AddressOf dataGridView1_CurrentCellDirtyStateChanged
        End Sub
    
        Private Sub dataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs)
            If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 Then
                Dim valor As Object = dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
                Select Case valor.ToString()
                    Case "Alta"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.Wheat
                        Exit Select
                    Case "Média"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.RoyalBlue
                        Exit Select
                    Case "Baixa"
                        dataGridView1.Rows(e.RowIndex).Cells(1).Style.BackColor = Color.Aquamarine
                        Exit Select
                End Select
            End If
        End Sub
    
        Private Sub dataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs)
            If dataGridView1.IsCurrentCellDirty Then
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DataGrid()
        End Sub
    End Class
    Att,

    Antero Marques
    _______________________________________________________________________________ 

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.
    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    • Editado Antero Marques quarta-feira, 6 de abril de 2016 13:53
    • Marcado como Resposta Marcos SJ quarta-feira, 6 de abril de 2016 16:21
    quarta-feira, 6 de abril de 2016 13:51
  • Bom Dia, Antero.

    Se eu inserir o Public datagrid() que vc postou, nao vai duplicar as colunas? pois elas já estao codificadas no dgv.

    Grato

    quinta-feira, 7 de abril de 2016 14:16
  • Maduh,

    O que te passei foi só um exemplo que como fazer.

    Se você já tem um ambiente, você vai apenas adaptar.

    Att,


    Antero Marques

    ___________________________________________________________________________

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.

    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    quinta-feira, 7 de abril de 2016 14:43
  • Ok. Abraços

    vou testar.

    quinta-feira, 7 de abril de 2016 15:28