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.
Ü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%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%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:
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%Setzen Sie die "AutoSizeMode" -Eigenschaft der DGV-letzten Spalte auf "Fill" und setzen Sie die Width-Eigenschaft der TextBox auf dgv.Columns ["lastcolumn"]. Width.