Anders als in meinem Tipp Die Vorgehensweise ist in diesem Fall etwas einfacher, wie wir sehen werden. ''' <summary> ''' Zeichnen eines Rechtecks um die selektierte Zeile eines Datagridview ''' </summary> ''' <param name="theDGV">das DatagridView</param> ''' <param name="lineWidth">die Linienstärke</param> ''' <param name="lineColor">die Linienfarbe</param> ''' <param name="e">DataGridViewRowPostPaintEventArgs des RowPostPaint-Ereignisses</param> Public Sub drawRectOnDGV(ByVal theDGV As DataGridView, _ ByVal lineWidth As Short, _ ByVal lineColor As Color, _ ByVal e As DataGridViewRowPostPaintEventArgs) ' Anwenden im RowPostPaint-Ereignis des betreffenden Datagridview Dim rect As Rectangle With theDGV If .Rows(e.RowIndex).Selected Then ' ist die Zeile selektiert? rect = .GetRowDisplayRectangle(e.RowIndex, False) ' das Rechteck der aktuellen Zeile ' Rechteck für den Rahmen erzeugen Dim rec As Rectangle = New Rectangle(rect.X + .RowHeadersWidth, rect.Y, _ calcDGVWidth(theDGV) - .RowHeadersWidth - 1, rect.Height - 1) ' Zeichnen des Rahmens ControlPaint.DrawBorder(e.Graphics, rec, _ lineColor, lineWidth, ButtonBorderStyle.Solid, _ lineColor, lineWidth, ButtonBorderStyle.Solid, _ lineColor, lineWidth, ButtonBorderStyle.Solid, _ lineColor, lineWidth, ButtonBorderStyle.Solid) End If End With End Sub ''' <summary> ''' Berechnen der aktuellen Breite eines Datagridview ''' </summary> ''' <param name="theDGV">das DatagridView</param> ''' <returns>Breite des DatagridView</returns> Public Function calcDGVWidth(ByVal theDGV As DataGridView) As Integer Dim theWidth As Integer With theDGV For Each c As DataGridViewColumn In .Columns If c.Visible = True Then theWidth += c.Width ' nur sichtbare Spaltenbreiten addieren Next If .RowHeadersVisible Then theWidth += .RowHeadersWidth If .Controls(1).Visible Then ' ist die vertikale Scrollbar aktuell sichtbar? theWidth += SystemInformation.VerticalScrollBarWidth ' Breite der Scrollbar End If End With Return theWidth End Function Der Code ist gut selbsterklärend, denke ich. Aufrufbeispiel: Private Sub DataGridView1_RowPostPaint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) _ Handles DataGridView1.RowPostPaint drawRectOnDGV(DataGridView1, 2, Color.Red, e) End Sub Dieser Tipp wurde bereits 14.403 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevOutBar 4.0 ![]() Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Tipp des Monats Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |