?
Solved

dark line at bottom of datagridview cell

Posted on 2009-04-04
8
Medium Priority
?
380 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
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!

 
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 2000 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

Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Suggested Courses

777 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