• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 390
  • Last Modified:

dark line at bottom of datagridview cell

Can someone give me the code to make the bottom line of a DGV cell darker than the other borders?
0
ddepuemd
Asked:
ddepuemd
  • 4
  • 4
1 Solution
 
ddepuemdAuthor Commented:
I've tried this and it doesn't work.  I can see the lines getting painted but then they go away.

    Private Sub PaintLines()
        For rw As Integer = 0 To DataGridView1.Rows.Count - 1
            If Not IsDBNull(DataGridView1.Rows(rw).Cells(16).Value) Then
                If Mid(DataGridView1.Rows(rw).Cells(16).Value, 2, 2) = ".3" Then
                    Try
                        Dim g As Graphics = DataGridView1.CreateGraphics()
                        Dim p As Pen = New Pen(Color.DarkBlue)
                        Dim rect1 As Rectangle, rect2 As Rectangle
                        rect1 = DataGridView1.GetCellDisplayRectangle(0, rw, True)
                        rect2 = DataGridView1.GetCellDisplayRectangle(22, rw, True)
                        Dim linefrom As Point, lineto As Point
                        linefrom.X = rect1.Left
                        linefrom.Y = rect1.Bottom + 1
                        lineto.X = rect2.Right
                        lineto.Y = rect2.Bottom + 1
                        g.DrawLine(p, linefrom, lineto)
                    Catch ex As Exception

                    End Try
                End If
            End If
        Next
    End Sub

Any ideas on how to make it stick?
0
 
jpaulinoCommented:
But you want that for ALL lines or just the last one ?
0
 
ddepuemdAuthor Commented:
only for certain rows in the grid...
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
jpaulinoCommented:
Ýou can use AdvancedBorderStyle on the CellPainting event to change the border to double.
This doesn't work properly if you then edit the item.

    Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
 
        If e.ColumnIndex <> -1 AndAlso e.RowIndex <> -1 Then
 
            ' Checks if the value of the column 1 (index 0) is bigger then 2
            If Me.DataGridView1(0, e.RowIndex).Value > 2 Then
                e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.InsetDouble
            End If
 
        End If
 
    End Sub

Open in new window

0
 
ddepuemdAuthor Commented:
Thanks for the input, but it doesn't work.  It seems that when I fill the grid (unbound) it doesn't write the to the cell or overwrites it or something.
0
 
jpaulinoCommented:
Is the grid unbound and what you want to do ?
Couldn't you fill the line with some backcolor ?
 
0
 
ddepuemdAuthor Commented:
The strange thing is that I call the function above after I fill the grid and, as I said, the lines appear then disappear.  If I call the function specifically, as from a button click, the lines show up.  How do I get around that?
0
 
jpaulinoCommented:
Try this way instead and use your criteria:
    Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
 
        If e.ColumnIndex <> -1 AndAlso e.RowIndex <> -1 Then
 
            ' Checks if the value of the column 1 (index 0) is bigger then 2
            If Me.DataGridView1(0, e.RowIndex).Value > 2 Then
 
                With e.AdvancedBorderStyle
                    .Top = DataGridViewAdvancedCellBorderStyle.Inset
                    .Left = DataGridViewAdvancedCellBorderStyle.Inset
                    .Right = DataGridViewAdvancedCellBorderStyle.Inset
                    .Bottom = DataGridViewAdvancedCellBorderStyle.Single
                End With
            Else
                With e.AdvancedBorderStyle
                    .Top = DataGridViewAdvancedCellBorderStyle.Inset
                    .Left = DataGridViewAdvancedCellBorderStyle.Inset
                    .Right = DataGridViewAdvancedCellBorderStyle.Inset
                    .Bottom = DataGridViewAdvancedCellBorderStyle.Inset
                End With
            End If
 
        End If
 
    End Sub

Open in new window

0

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now