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.399 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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
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. |