vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Datagridview OwnerDrawn individuelle Höhe 
Autor: Manfred X
Datum: 23.02.19 06:18

Hallo!

Das DataGridView-Control bietet verschiedenartige Möglichkeiten
der Anpassung der Zellgröße an die formatierte Darstellung des
Zellinhaltes.

Im folgenden ein kleines Windows.Forms-Beispiel dafür,
wie diese Anpassung durch den Code aussehen könnte:
Public Class frmGridRowHeightDemo
 
    Dim dt As New DataTable, bs As New BindingSource
 
    Dim WithEvents dgv As New DataGridView With
        {.Parent = Me, .DataSource = bs,
         .Dock = DockStyle.Left Or DockStyle.Bottom, .Top = 40}
 
    Dim WithEvents btnChangeContent As New Button With
        {.Parent = Me, .Text = "Change Content"}
 
    'Default-Grid-Zeilenhöhe per Code
    Const DefaultRowHeight As Integer = 30 
    Dim GridDefaultFont As New Font("Arial", 10)
 
 
    Private Sub frmGRHD_Load(sender As Object,
                        e As EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(400, 300)
        dgv.Width = 380
 
        'Testdaten                       
        dt.Columns.Add("whatever", GetType(String))
 
        dt.Rows.Add("short entry")
 
        dt.Rows.Add("Its long way to tipperary" & vbCrLf &
        "It's a long way to go.  It's a long way to Tipperary," & 
        vbCrLf & "to the sweetest girl I know!")
 
        dt.Rows.Add("another short entry")
 
        dt.Rows.Add("Sometimes" & vbCrLf & 
        "All I need is the air That I breathe" &
        vbCrLf & "and to love you")
 
        dt.Rows.Add("last short entry")
 
        'Datenbindung herstellen
        bs.DataSource = dt
 
        'Zeilenhöhe im Grid per Code festlegen
        dgv.AutoSizeRowsMode =
        DataGridViewAutoSizeRowsMode.None
        For i As Integer = 0 To dgv.Rows.Count - 1
            dgv.Rows(i).Height = DefaultRowHeight
        Next i
 
        dgv.Font = GridDefaultFont
        dgv.DefaultCellStyle.WrapMode = DataGridViewTriState.True
 
        'Spaltenbreite festlegen
        dgv.Columns(0).Width = 200
    End Sub
 
 
    Private Sub dgv_CellPainting(sender As Object,
        e As DataGridViewCellPaintingEventArgs) Handles dgv.CellPainting
 
        If e.ColumnIndex < 0 Or e.RowIndex < 0 Then Exit Sub
        If e.FormattedValue Is Nothing Then Exit Sub
 
        'Referenz zur Zeile mit der zu zeichnenden Zelle
        Dim row As DataGridViewRow = dgv.Rows(e.RowIndex)
 
        'zu zeichender Text
        Dim txt As String = e.FormattedValue.ToString
 
        'Bestimmung des Platzbedarfs des Textes in der Zelle
        Dim sz As SizeF = e.Graphics.MeasureString(txt, e.CellStyle.Font,
                e.CellBounds.Width - 4, StringFormat.GenericDefault)
 
        'Höhe bei Bedarf anpassen
        If sz.Height + 4 > e.CellBounds.Height Then
            row.Height = CInt(sz.Height + 4)
        ElseIf sz.Height + 4 < DefaultRowHeight Then
            'ggf. Zurücksetzen der Zeilenhöhe
            row.Height = DefaultRowHeight
        End If
 
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datagridview OwnerDrawn individuelle Höhe830msSuper22.02.19 10:56
Re: Datagridview OwnerDrawn individuelle Höhe642Manfred X23.02.19 06:18
Re: Datagridview OwnerDrawn individuelle Höhe419msSuper25.02.19 07:46

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel