Solved

Vertical line in datagridview

Posted on 2009-04-04
4
594 Views
Last Modified: 2012-05-06
I got the horizontal line working and tried the same technique to draw a different color vertical line between two columns but it doesn't work.

Try
            Dim g As Graphics = DataGridView1.CreateGraphics()
            Dim p As Pen = New Pen(Color.Black)
            Dim rect1 As Rectangle, rect2 As Rectangle
            rect1 = DataGridView1.GetCellDisplayRectangle(16, 0, True)
            rect2 = DataGridView1.GetCellDisplayRectangle(16, DataGridView1.Rows.Count - 1, True)
            Dim linefrom As Point, lineto As Point
            linefrom.X = rect1.Left
            linefrom.Y = rect1.Top + 1
            lineto.X = rect2.Left
            lineto.Y = rect2.Bottom + 1
            g.DrawLine(p, linefrom, lineto)
        Catch ex As Exception
            errlog.WriteError("Error in paint lines: " & ex.Message, "PaintLines")
        End Try
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
  • 2
  • 2
4 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 24077167
It might be easier if you handle the CellPainting event, and check to see if the cell's ColumnIndex is the one that you need, and then you give the illusion that you are drawing a single continuous line...
0
 

Author Comment

by:ddepuemd
ID: 24077347
I'm not sure I understand what you mean.  How could I do that?
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 24080420
Example:


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Me.dgv.RowTemplate.Height = Me.dgv.ClientSize.Height / 3
 
        Me.dgv.RowCount = 3
        Me.dgv.ColumnCount = 3
        Me.dgv.RowHeadersVisible = False
        Me.dgv.ColumnHeadersVisible = False
 
        Me.dgv.Columns(0).Width = Me.dgv.ClientSize.Width / 3
        Me.dgv.Columns(1).Width = Me.dgv.Columns(0).Width
        Me.dgv.Columns(2).Width = Me.dgv.Columns(0).Width
 
        Me.dgv.ScrollBars = ScrollBars.None
        Me.dgv.DefaultCellStyle.SelectionBackColor = Me.dgv.DefaultCellStyle.BackColor
        Me.dgv.DefaultCellStyle.SelectionForeColor = Me.dgv.DefaultCellStyle.ForeColor
 
        AddHandler Me.dgv.CellPainting, AddressOf OnCellPainting
 
    End Sub
 
    Private Sub OnCellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs)
 
        If e.ColumnIndex = 1 Then
            Dim x As Integer = e.CellBounds.Right - 3
            Dim y1 As Integer = e.CellBounds.Top
            Dim y2 As Integer = e.CellBounds.Bottom
 
            e.PaintBackground(e.ClipBounds, e.State = DataGridViewElementStates.Selected)
            e.PaintContent(e.ClipBounds)
            e.Graphics.DrawLine(Pens.Red, x, y1, x, y2)
 
            e.Handled = True
 
        End If
 
    End Sub

Open in new window

DataGridView----Vertical-Line.png
0
 

Author Closing Comment

by:ddepuemd
ID: 31566708
thank you
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

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

726 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