Frage

Ich habe eine Winform in VS2008, die eine Datagridview enthält. Die Datagrid enthält eine Liste mit mehreren Spalten. Diese sind eine feste Breite, außer eine, die ich eingerichtet haben zu nehmen, was Raum gelassen wird und füllen die gesamte Breite der Ansicht. Die winform ist resizeable in alle Richtungen.

Die Frage, die ich zu lösen versuche, ist, dass, wenn ich die vertikale Größe des Fensters erhöhen schnappen die Scrollbar verschwindet und die Spalten auf der rechten Seite den zusätzlichen Platz zu füllen. Was ich möchte, ist geschehen, dass die vertikale Bildlaufleiste verschwindet nie. Einstellen Scrollbars auf vertikale in den Eigenschaften des Datagridview dies nicht tun.

Ist das überhaupt möglich zu erreichen? Und wenn ja, wie bekomme ich die vertikale Bildlaufleiste immer sichtbar sein?

War es hilfreich?

Lösung

Versuchen Sie das Datagridview-Subklassen und Handhabung der Visible Veranstaltung verticalScrollBar. Sie sollten in die Visible-Eigenschaft auf True festlegen, um dort überschreibt das Standardverhalten.

So etwas wie dies, glaube ich ...

public class SubclassedDataGridView : DataGridView
    {
        public SubclassedDataGridView (): base()
        {
            VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged);
        }

        void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
        {
            VerticalScrollBar.Visible = true;
        }
     }

Andere Tipps

In meinem Fall (wieder) das Sortieren der Gitter geholfen. Versuchen etw wie folgt aus:

 if (gridName.SortedColumn == null)
   gridName.Sort(gridNameColumns[columnName],ListSortDirection.Ascending);
 else
 {
    ListSortDirection dir;
    if (gridName.SortOrder == SortOrder.Descending) 
       dir = ListSortDirection.Descending;
    else dir = ListSortDirection.Ascending;

    gridName.Sort(gridName.SortedColumn, dir);
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top