Discussion:
DGV - Größenanpassung funktioniert nicht
(zu alt für eine Antwort)
Uwe Gabbert
2009-08-05 03:16:54 UTC
Permalink
Hallo,

ich erzeuge mehrere DGV's, welche mit Daten gefüllt werden. ->
funktioniert
Dann formatiere ich die Zellen (Farbe, Schreibschutz, Zeilenumbruch) ->
funktioniert

Aber die Anpassung der Zeilenbreiten und Höhen funktionieren nicht.
Die Breite und Höhe der Zellen werden nicht automatisch angepasst,
sondern bleiben auf dem Standard (ca. 100 breit). Auch werden Zellen,
in denen ein Zeilenumbruch erfolgt, nicht höher dargestellt, so dass
die 2. Zeile nicht zu lesen ist.

Wo liegt mein Fehler?

[code]
Dim tp As New TabPage
With tp
' .Name = "tp" & g.ToString
.Text = g.ToString
tbcArtikel.TabPages.Add(tp)

Dim dgv As New DataGridView
tp.Controls.Add(dgv)
With dgv
.Update()
'.Name = "dgv" & g.ToString
.Margin = New Padding(5)
'.Width = 570
.Height = Parent.Height
.AutoSize = True
.DataSource =
_al.ArtikelNachGruppen(g.ToString)
.AutoResizeColumns( _
DataGridViewAutoSizeColumnsMode.AllCells)

.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells)
With .Columns("Bezeichnung")
.ReadOnly = True
.DefaultCellStyle.BackColor =
Color.LightYellow
.DefaultCellStyle.WrapMode = _
DataGridViewTriState.True
' .Width = 500
End With

With .Columns("Preis")
' .Width = 60
.DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
.DefaultCellStyle.Format = "c"
End With
.Columns("Artikelnummer").Visible = False
.Columns("Einheit").Visible = False
.Columns("berechnen").Visible = False
.Columns("MwSt").Visible = False
.Columns("Gruppe").Visible = False
.Refresh()
End With
End With
[/code]
Peter Götz
2009-08-05 07:09:37 UTC
Permalink
Hallo Uwe,
Post by Uwe Gabbert
ich erzeuge mehrere DGV's, welche mit Daten gefüllt werden. ->
funktioniert
Dann formatiere ich die Zellen (Farbe, Schreibschutz,
Zeilenumbruch) -> funktioniert
Aber die Anpassung der Zeilenbreiten und Höhen
funktionieren nicht.
Die Breite und Höhe der Zellen werden nicht automatisch
angepasst, sondern bleiben auf dem Standard (ca. 100 breit).
Auch werden Zellen, in denen ein Zeilenumbruch erfolgt, nicht
höher dargestellt, so dass die 2. Zeile nicht zu lesen ist.
Schau Dir mal

www.gssg.de -> Visual Basic -> VB.net
-> DataGridView word wrap

an. Bei diesem Beispiel wird die Zeilenhöhe automatisch
an den jeweils eingegebenen Text (mit Zeilenumbruch)
schon bei der Eingabe angepasst.

Ein weiteres Beispiel

www.gssg.de -> Bisual Basic -> VB.net
Post by Uwe Gabbert
DataGridView AutoResize
zeigt ebenfalls das Anpassen der Zeilenhöhen und
Spaltenbreiten.
Post by Uwe Gabbert
Wo liegt mein Fehler?
[code]
Dim tp As New TabPage
With tp
' .Name = "tp" & g.ToString
.Text = g.ToString
tbcArtikel.TabPages.Add(tp)
Dim dgv As New DataGridView
tp.Controls.Add(dgv)
With dgv
.Update()
'.Name = "dgv" & g.ToString
.Margin = New Padding(5)
'.Width = 570
.Height = Parent.Height
.AutoSize = True
.DataSource =
_al.ArtikelNachGruppen(g.ToString)
.AutoResizeColumns( _
DataGridViewAutoSizeColumnsMode.AllCells)
.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells)
With .Columns("Bezeichnung")
.ReadOnly = True
.DefaultCellStyle.BackColor =
Color.LightYellow
.DefaultCellStyle.WrapMode = _
DataGridViewTriState.True
' .Width = 500
End With
With .Columns("Preis")
' .Width = 60
.DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
.DefaultCellStyle.Format = "c"
End With
.Columns("Artikelnummer").Visible = False
.Columns("Einheit").Visible = False
.Columns("berechnen").Visible = False
.Columns("MwSt").Visible = False
.Columns("Gruppe").Visible = False
.Refresh()
End With
End With
[/code]
In Deinem Code kommt weder

DataGridView.AutoResize.Column
DataGridView.AutoResizeColumns

noch

DataGridView.AutoresizeRow
DataGridView.AutoResizeRows

vor, um Spaltenbreiten oder Zeilenhöhen autom. an den
Text anzupassen.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)
Uwe Gabbert
2009-08-07 05:16:07 UTC
Permalink
Danke.

habe den Fehler gefunden.
--
Uwe Gabbert
VS 2008 - VB - .NET 3.5
Andreas Vogt
2009-08-07 06:06:36 UTC
Permalink
Hallo,
könntest du posten wie obiger Code richtig aussieht?
Habe nämlich ein ähnliches Problem.

Gruß Andreas
Uwe Gabbert
2009-08-07 06:15:07 UTC
Permalink
Andreas Vogt a écrit
Post by Uwe Gabbert
Hallo,
könntest du posten wie obiger Code richtig aussieht?
Habe nämlich ein ähnliches Problem.
Gruß Andreas
Sub TabAnlegen()
tbcArtikel.Location = New Drawing.Point(10, 60)
tbcArtikel.Size = New Drawing.Size(Me.Width - 20, Me.Height - 140)
tbcArtikel.Refresh()
For Each g In _al.GruppenListe
Try
Dim tp As New TabPage
With tp
.Text = g.ToString
.SetBounds(5, 5, tbcArtikel.Width - 10, Me.tbcArtikel.Height - 10)
tbcArtikel.TabPages.Add(tp)

Dim dgv As New DataGridView
With dgv
.SetBounds(5, 5, tp.Width - 10, tp.Height - 10)
.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right Or AnchorStyles.Bottom
.DefaultCellStyle.Font = New Drawing.Font("Arial", 9)
.ColumnHeadersDefaultCellStyle.Font = New Drawing.Font("Arial", 8, FontStyle.Bold)
.RowHeadersVisible = False
End With
tp.Controls.Add(dgv)
With dgv

.DataSource = _al.ArtikelNachGruppen(g.ToString)
With .Columns("Preis")
.Width = 60
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.DefaultCellStyle.Format = "c"
End With
With .Columns("Bezeichnung")
.ReadOnly = True
.DefaultCellStyle.BackColor = Color.LightYellow
.DefaultCellStyle.WrapMode = DataGridViewTriState.True
.DefaultCellStyle.Padding = New Padding(3)
.Width = dgv.Width - 63


End With
.Columns("Artikelnummer").Visible = False
.Columns("Einheit").Visible = False
.Columns("berechnen").Visible = False
.Columns("MwSt").Visible = False
.Columns("Gruppe").Visible = False

.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells
.AutoResizeRows()
.AutoSize = True


End With

End With
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try

Next
End Sub


Viel Erfolg. Uwe
--
Uwe Gabbert
VS 2008 - VB - .NET 3.5
Andreas Vogt
2009-08-07 10:28:37 UTC
Permalink
Danke!

Gruß Andreas

Loading...