Solved

dark line at bottom of datagridview cell

Posted on 2009-04-04
8
364 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
Comment Utility
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
Comment Utility
But you want that for ALL lines or just the last one ?
0
 

Author Comment

by:ddepuemd
Comment Utility
only for certain rows in the grid...
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Ý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
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:ddepuemd
Comment Utility
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
Comment Utility
Is the grid unbound and what you want to do ?
Couldn't you fill the line with some backcolor ?
 
0
 

Author Comment

by:ddepuemd
Comment Utility
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
Comment Utility
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

762 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now