Datagridview besitzt keine Scrollbar

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von elmsrock.

    Datagridview besitzt keine Scrollbar

    Hallo zusammen,
    sitze schon seit Stunden an einem Problem und komme nicht weiter. Fülle ein Datagridview aus einer Tabelle. Es erscheint keine Scrollbar und ich kann nicht alle Zeilen lesen. Am Datagridview auf der Form habe ich nichts eingestellt / verändert.
    Hier mal der Code:

    VB.NET-Quellcode

    1. Imob_StatistikStw.DataGridView_Jahresstatistik.DataSource = Hausverbrauch
    2. With Imob_StatistikStw.DataGridView_Jahresstatistik
    3. .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    4. .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
    5. For Me.I = 1 To 6
    6. .Columns(Me.I).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
    7. .Columns(Me.I).SortMode = DataGridViewColumnSortMode.NotSortable
    8. .Columns(Me.I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    9. Next
    10. .AllowUserToAddRows = False
    11. .AllowUserToDeleteRows = False
    12. .AllowUserToResizeColumns = False
    13. .AllowUserToResizeRows = False
    14. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    15. .ScrollBars = ScrollBars.Horizontal
    16. .ReadOnly = True
    17. Me.I = 0
    18. End With


    PS: Lasse ich diesen Code raus, ist auch keine Scrollbar sichtbar.
    Gruß Markus
    Ich wei0 nicht.

    Mit Me.I wollte der Code bei mir nicht laufen.
    Ich habe folgenden Code verwendet und mir wurde eine Scrollleiste angezeig.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    2. Dim I As Integer
    3. Dim kk As Integer
    4. For kk = 1 To 200
    5. DataGridView1.Rows.Add()
    6. Next kk
    7. With DataGridView1
    8. .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    9. .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
    10. 'For Me.I = 1 To 6
    11. For I = 1 To 6
    12. .Columns(I).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
    13. .Columns(I).SortMode = DataGridViewColumnSortMode.NotSortable
    14. .Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter
    15. Next
    16. .AllowUserToAddRows = False
    17. .AllowUserToDeleteRows = False
    18. .AllowUserToResizeColumns = False
    19. .AllowUserToResizeRows = False
    20. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    21. .ScrollBars = ScrollBars.Both
    22. '.ReadOnly = True
    23. 'Me.I = 0
    24. End With
    25. End Sub
    Funktioniert bei mir auch nicht. Habe nun auch nicht wirklich Lust auf ein Listview zu wechseln. Vielleicht habe ich ja vorher einen Fehler gemacht. Hier mal die komplette Sub

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imob_StatistikStw.DataGridView_Jahresstatistik.Rows.Clear()
    2. Dim Hausverbrauch As New DataTable("Verbrauch")
    3. Dim Spalte1 As DataColumn = Hausverbrauch.Columns.Add("Monat", GetType(System.String))
    4. Dim Spalte2 As DataColumn = Hausverbrauch.Columns.Add("Zählerstand", GetType(System.String))
    5. Dim Spalte3 As DataColumn = Hausverbrauch.Columns.Add("Verbrauch" & vbNewLine & "Monat", GetType(System.String))
    6. Dim Spalte4 As DataColumn = Hausverbrauch.Columns.Add("Verbrauch" & vbNewLine & "lfd. Jahr", GetType(System.String))
    7. Dim Spalte5 As DataColumn = Hausverbrauch.Columns.Add("Verbrauch" & vbNewLine & "Jahresschnitt", GetType(System.String))
    8. Dim Spalte6 As DataColumn = Hausverbrauch.Columns.Add("Verbrauch" & vbNewLine & "kom. Jahr", GetType(System.String))
    9. Dim Spalte7 As DataColumn = Hausverbrauch.Columns.Add("Plus/Minus" & vbNewLine & "Vorjahr", GetType(System.String))
    10. ' Strom Gesamtes Haus
    11. Dim Zeilenkopf_StromHA As DataRow = Hausverbrauch.NewRow
    12. Zeilenkopf_StromHA(0) = "Stromverbrauch"
    13. Zeilenkopf_StromHA(1) = "Gesamtes Haus"
    14. Zeilenkopf_StromHA(2) = "in " & BuJahr.ToString
    15. Hausverbrauch.Rows.Add(Zeilenkopf_StromHA)
    16. Dim Zeile_StromHa As DataRow = Hausverbrauch.NewRow
    17. Zeile_StromHa(0) = "Vorjahr (" & (BuJahr - 1).ToString & ")"
    18. Zeile_StromHa(1) = Strom_HA(0).ZaehlerJahrAnfang.ToString("N")
    19. Zeile_StromHa(2) = (Strom_HA(0).Vorjahresverbrauch / 12).ToString("N")
    20. Zeile_StromHa(3) = Strom_HA(0).Vorjahresverbrauch.ToString("N")
    21. Hausverbrauch.Rows.Add(Zeile_StromHa)
    22. For Me.I = 1 To 12
    23. If Me.I < 10 Then Me.Auslesung = "0" & Me.I.ToString & "-" & BuJahr.ToString
    24. If Me.I > 9 Then Me.Auslesung = Me.I.ToString & "-" & BuJahr.ToString
    25. With Klassensatz
    26. .Feld(1).Wert = Me.Auslesung
    27. .Lesen(, True)
    28. If .VorgangOK = False Then
    29. Klassensatz = New MBC.CDatenBank
    30. Exit For
    31. End If
    32. Dim Strom_ZHA As DataRow = Hausverbrauch.NewRow
    33. Strom_HA(Me.I).MonatsNummer = CInt(Strings.Left(.Feld(1).Wert, 2))
    34. Strom_HA(Me.I).ZaehlerMonat = CDbl(.Feld(2).Wert)
    35. Strom_HA(Me.I).MonatVerbrauch = CDbl(.Feld(20).Wert)
    36. Strom_KG(Me.I).MonatsNummer = Strom_HA(Me.I).MonatsNummer
    37. Strom_KG(Me.I).ZaehlerMonat = CDbl(.Feld(3).Wert)
    38. Strom_KG(Me.I).MonatVerbrauch = CDbl(.Feld(21).Wert)
    39. Strom_EG(Me.I).MonatsNummer = Strom_HA(Me.I).MonatsNummer
    40. Strom_EG(Me.I).ZaehlerMonat = CDbl(.Feld(4).Wert)
    41. Strom_EG(Me.I).MonatVerbrauch = CDbl(.Feld(22).Wert)
    42. Strom_OG(Me.I).MonatsNummer = Strom_HA(Me.I).MonatsNummer
    43. Strom_OG(Me.I).ZaehlerMonat = CDbl(.Feld(5).Wert)
    44. Strom_OG(Me.I).MonatVerbrauch = CDbl(.Feld(23).Wert)
    45. Strom_HZ(Me.I).MonatsNummer = Strom_HA(Me.I).MonatsNummer
    46. Strom_HZ(Me.I).ZaehlerMonat = CDbl(.Feld(6).Wert)
    47. Strom_HZ(Me.I).MonatVerbrauch = CDbl(.Feld(24).Wert)
    48. Strom_HA(13).Verbrauch_Jahr += Strom_HA(Me.I).MonatVerbrauch
    49. Strom_HA(13).Verbrauch_Schnitt = (Strom_HA(Me.I).MonatVerbrauch * 12)
    50. Strom_HA(13).Verbrauch_Kom = ((Strom_HA(13).Verbrauch_Jahr * 12) / CDbl(Strom_HA(Me.I).MonatsNummer))
    51. Strom_HA(13).Verbrauch_PM = (Strom_HA(13).Verbrauch_Kom - Strom_HA(0).Vorjahresverbrauch)
    52. Strom_ZHA(0) = Funktion.Monatsname(Strom_HA(Me.I).MonatsNummer)
    53. Strom_ZHA(1) = Strom_HA(Me.I).ZaehlerMonat.ToString("N")
    54. Strom_ZHA(2) = Strom_HA(Me.I).MonatVerbrauch.ToString("N")
    55. Strom_ZHA(3) = Strom_HA(13).Verbrauch_Jahr.ToString("N")
    56. Strom_ZHA(4) = Strom_HA(13).Verbrauch_Schnitt.ToString("N")
    57. Strom_ZHA(5) = Strom_HA(13).Verbrauch_Kom.ToString("N")
    58. Strom_ZHA(6) = Strom_HA(13).Verbrauch_PM.ToString("N")
    59. Hausverbrauch.Rows.Add(Strom_ZHA)
    60. End With
    61. Next
    62. Dim Leerzeile_StromHA As DataRow = Hausverbrauch.NewRow
    63. Leerzeile_StromHA(0) = Nothing
    64. Hausverbrauch.Rows.Add(Leerzeile_StromHA)
    65. Imob_StatistikStw.DataGridView_Jahresstatistik.DataSource = Hausverbrauch
    66. With Imob_StatistikStw.DataGridView_Jahresstatistik
    67. .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    68. .Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
    69. For m = 1 To 6
    70. .Columns(m).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
    71. .Columns(m).SortMode = DataGridViewColumnSortMode.NotSortable
    72. .Columns(m).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    73. Next
    74. .AllowUserToAddRows = False
    75. .AllowUserToDeleteRows = False
    76. .AllowUserToResizeColumns = False
    77. .AllowUserToResizeRows = False
    78. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
    79. .ScrollBars = ScrollBars.Horizontal
    80. .ReadOnly = False
    81. End With


    Gruß Markus
    1. Hast du mal meine den Eigenscahften der DataGridView geneu geschaut?
    Was eigendlich überflüssig ist, da du die Eigenschaft ja setzt.
    2. Wird die DataGridView vielleich von was verdeckt?
    3. Hast du meinen angepassten Code in einem neuen Projekt getestet?
    Hast du dir mal typisierte Datasets angesehen? Daten laden, speichern, verarbeiten
    da kannst du deinen ganzen Code weglassen und ausschließlich mit gebundenen DataGridView arbeiten. Speichern und Laden sind wenige Codezeilen...

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Nein, denke ich habs schon verstanden. Die Tabelle ist spezifiziert auf eine Gruppe von Daten. Die Einträge in den Tabellen werden typisiert, Text als String, Zahlen als Zahl (arbeite mit einer Accsess-Datenbank Office 2000). Nur für teilweise einen oder zwei Datensätze eine Tabelle anzulegen?
    Gruß Markus
    Lange her das Thema , aber ich hatte heute das gleiche Problem und bin auf den Splitcontainer angewiesen, der bei mir die oben genannte Groupbox ersetzt.
    Es sitzen also bei mir 2 DataGridViews in einem Splitcontainer in einem Tablelayoutpanel in einem Form und alle stehen auf dock=Fill.
    Zwar passt das Tablelayoutpanel bei Form.Resize seine Höhe an die des Forms an, aber der Splitcontainer seine dann nicht an die des Tablelayoutpanels, zumindest nicht in Richtung kleiner.
    Der Splitcontainer bleibt in seiner Höhe in der durch das Andocken an das Tablelayoutpanel vorgegebenen Größe beim Kompilieren.
    Abhilfe schafft also, die Form auf minimale Höhe zu bringen, was dann erst für den Splitcontainer ermöglicht, dessen Höhe zu minimieren, so dass die Datagridviews einen Overflow bekommen.
    Also bspw.:
    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    Me.Size = New Size(1280, 0)
    SplitContainer1.Size = New Size(1280, 0)
    Me.Size = New Size(1280, 512)
    End Sub