Solved

dark line at bottom of datagridview cell

Posted on 2009-04-04
8
371 Views
Last Modified: 2012-05-06
Can someone give me the code to make the bottom line of a DGV cell darker than the other borders?
0
Comment
Question by:ddepuemd
  • 4
  • 4
8 Comments
 

Author Comment

by:ddepuemd
ID: 24066656
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
 
LVL 48

Expert Comment

by:jpaulino
ID: 24067474
But you want that for ALL lines or just the last one ?
0
 

Author Comment

by:ddepuemd
ID: 24067509
only for certain rows in the grid...
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 48

Expert Comment

by:jpaulino
ID: 24067788
Ý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
 

Author Comment

by:ddepuemd
ID: 24067993
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
 
LVL 48

Expert Comment

by:jpaulino
ID: 24068004
Is the grid unbound and what you want to do ?
Couldn't you fill the line with some backcolor ?
 
0
 

Author Comment

by:ddepuemd
ID: 24068077
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
 
LVL 48

Accepted Solution

by:
jpaulino earned 500 total points
ID: 24068309
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question