Benutzer mit den meisten Antworten
DataGridView - Vertikales Scrollen, Pixel für Pixel

Frage
-
Guten Tag beisammen,
ich entwickle momentan ein Tool welches Lieferscheine erstellt, die man sich ansehen und zusenden kann.
Als Entwicklungsumgebung nutze ich Visual Studio Express 2012.
Zum Anzeigen der erstellten Lieferscheine verwende ich eine DataGridView. Da einige Zeilen der DataGridView zu hoch sind sieht das vertikale Scrollen in der DataGridView weniger schön aus. Das liegt bekanntlich daran, dass die DataGridView immer "Zeile für Zeile" hüpft.
Und genau das ist schon mein Problem. Gibt es eine vorgegebene Eigenschaft, die ich nutzen kann, damit ich ein "flüssiges, Pixel für Pixel Scrollen" habe, welches angenehm aussieht und damit die Leserlichkeit fördert?
Ich suche mir jetzt seit zwei Tagen einen Wolf, doch anscheinend hat niemand ein Problem mit dem "Zeile für Zeile-Scrollen".
Ich hoffe jemand hatte schon mal dieses Problem und weiß Rat. :-)
Lieben Gruß, Lukas.
- Bearbeitet Lukas_Rotermund Montag, 14. Oktober 2013 11:04 Ergänzung der IDE
Antworten
-
Hi Lukas.
Probier mal ein Panel aus, in das du dein DGV hineinfügst. Dann das Panel auf Autoscroll = True setzen, und das DGV.Autosize = True.
Danach dürftest du ein "frei" scrollbares" Panel haben, das über die gesamte Größe deines DGV scrollt.
Erfüllt vermutlich den Zweck, performant dürfte das aber nur bedingt sein ... musst du einfach mal ausprobieren, denke ich.
LG, Dennis.
EDI Consultant/Developer
Ich nutze meistens VB6 und VS2005 bis VS2012
Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.
- Als Antwort markiert Lukas_Rotermund Montag, 14. Oktober 2013 12:00
Alle Antworten
-
Hi Lukas.
Probier mal ein Panel aus, in das du dein DGV hineinfügst. Dann das Panel auf Autoscroll = True setzen, und das DGV.Autosize = True.
Danach dürftest du ein "frei" scrollbares" Panel haben, das über die gesamte Größe deines DGV scrollt.
Erfüllt vermutlich den Zweck, performant dürfte das aber nur bedingt sein ... musst du einfach mal ausprobieren, denke ich.
LG, Dennis.
EDI Consultant/Developer
Ich nutze meistens VB6 und VS2005 bis VS2012
Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.
- Als Antwort markiert Lukas_Rotermund Montag, 14. Oktober 2013 12:00
-
Noch ein kleiner Code zum ausprobieren ... woher allerdings der überzählige graue Bereich am Ende stammt, habe ich auf die Schnelle nicht finden können.
Public Class Form1 Dim RND As Random Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RND = New Random(Now.Second) Dim DGV As DataGridView = New DataGridView With DGV For X = 0 To 99 .Columns.Add(New DataGridViewTextBoxColumn With {.HeaderText = "Spalte " & X.ToString}) Next For Y = 0 To 99 .Rows.Add(New DataGridViewRow() With {.Height = RND.Next(12, 40)}) Next For X = 0 To 99 For Y = 0 To 99 Dim Cell As DataGridViewTextBoxCell = DirectCast(.Item(X, Y), DataGridViewTextBoxCell) Cell.Value = RandomString(10) Next Next .Name = "DGV" .AllowUserToAddRows = False .AllowUserToDeleteRows = False .AllowUserToOrderColumns = True .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .AutoSize = True End With Dim Panel1 As Panel = New Panel With Panel1 .AutoScroll = True .Controls.Add(DGV) .Dock = DockStyle.Fill End With Me.Controls.Add(Panel1) DGV.Location = New Point(0, 0) End Sub Public Function RandomString(ByVal ML As Integer) As String Dim S As String = "" Dim L As Integer = RND.Next(Math.Max(ML \ 2, 1), Math.Max(ML, 2)) For I As Integer = 0 To L - 1 S = S & Chr(RND.Next(65, 90)) Next Return S End Function End Class
Ops. ... gerade gemerkt, bin ja hier im C#-Teil. Naja, vielleicht hilfts ja trotzdem.
LG, Dennis.
EDI Consultant/Developer
Ich nutze meistens VB6 und VS2005 bis VS2012
Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.
- Bearbeitet Dennis Becker Montag, 14. Oktober 2013 11:42 VB-Code im C#-Forum ;-)