So erkennen Sie die vertikale Bildlaufleiste in einem DataGridView-Steuerelement

7

Winforms in vs2008 verwenden. Ich habe eine DataGridView und ich möchte erkennen, wenn die vertikale Bildlaufleiste sichtbar ist. Für welches Ereignis sollte ich mich anmelden?

Ich füge die Summe der einzelnen Zellenwerte in der letzten Spalte des Rasters hinzu und zeige diesen Wert in einem Textfeld am unteren Rand der DataGridView an.

Ich möchte, dass dieses Textfeld mit den Zellenwerten ausgerichtet bleibt (ich habe sie rechtsbündig ausgerichtet, da es $$-Werte sind), selbst nachdem die Bildlaufleiste vorhanden ist.

    
Billy 21.04.2010, 18:43
quelle

7 Antworten

8

Übermäßiges DGV-Verhalten ist normalerweise ein großer Nackenschmerz. Das ging aber ziemlich schnell. Fügen Sie Ihrem Formular eine neue Klasse hinzu und fügen Sie den unten gezeigten Code ein. Kompilieren. Legen Sie das neue Steuerelement oben in der Symbolleiste auf ein Formular ab. Implementieren Sie das ScrollbarVisibleChanged-Ereignis.

%Vor%     
Hans Passant 21.04.2010, 19:03
quelle
20
%Vor%     
Adam Butler 14.10.2011 06:45
quelle
1

Anstatt Linq (Adam Butler) zu verwenden, können Sie einfach die Steuerelemente durchlaufen und einen Ereignishandler anmelden, der jedes Mal aufgerufen wird, wenn sich die Sichtbarkeit der Bildlaufleiste ändert. Ich habe es so implementiert und es funktioniert ziemlich reibungslos:

%Vor%

mache das irgendwo nach der InitializeComponent () Machen Sie im Handler alles, was Sie als Reaktion auf die Sichtbarkeitsänderung der vertikalen Bildlaufleiste tun müssen. Gleiches funktioniert für die horizontale Bildlaufleiste (ersetzen Sie VScrollBar durch HScrollBar):

%Vor%     
Andy3D 27.08.2014 12:26
quelle
0

Ich denke, dafür gibt es kein Ereignis ... aber Sie können mit so etwas an allen Stellen versuchen, an denen das Gitter wachsen kann:

  • Besorgen Sie sich die Anzahl der tatsächlichen Zeilen in der Gridview + der Kopfzeile
  • Multiplizieren Sie diese Zahl mit der Höhe jeder Zeile
  • Wenn das Ergebnis größer als die Höhe des DataGrid ist, muss eine vertikale Bildlaufleiste vorhanden sein.
Claudia 21.04.2010 19:08
quelle
0

Ich gab Hans Passant das Häkchen, da er die gestellte Frage beantwortete ... Ich ging jedoch einen anderen Weg zur Lösung. Da das Dialogfeld modal ist, ändert sich die Liste der Elemente seit der Erstellung nicht. So kann ich den folgenden Code aufrufen, um sicherzustellen, dass die Textfelder an der richtigen Stelle sind, wenn das Dialogfeld zum ersten Mal angezeigt wird.

%Vor%     
Billy 21.04.2010 20:04
quelle
0

Wenn sich Ihr dgv in einem Panel befindet, können Sie die Eigenschaften für die Panel- und dgv-Höhe vergleichen. Wenn dgvs größer als das Panel ist, dann muss es eine Bildlaufleiste geben, richtig?

Wie:

%Vor%     
Ryan.Hunt 25.03.2014 16:47
quelle
0

Setzen Sie die "AutoSizeMode" -Eigenschaft der DGV-letzten Spalte auf "Fill" und setzen Sie die Width-Eigenschaft der TextBox auf dgv.Columns ["lastcolumn"]. Width.

    
Mansoorulhaq Mansoor 09.05.2014 07:52
quelle

Tags und Links