ScrollBar в DataGridView - PullRequest
       16

ScrollBar в DataGridView

1 голос
/ 23 января 2009

У меня есть winform в vs2008, который содержит DataGridView. Сетка данных содержит список с несколькими столбцами. Это фиксированная ширина, за исключением той, которую я настроил, чтобы занять оставшееся пространство и заполнить ширину вида. Размер winform можно изменять во всех направлениях.

Проблема, которую я пытаюсь решить, заключается в том, что при увеличении размера окна по вертикали полоса прокрутки исчезает, и столбцы щелкают вправо, чтобы заполнить дополнительное пространство. Я хотел бы, чтобы вертикальная полоса прокрутки никогда не исчезала. Установка ScrollBars в вертикальное положение в свойствах DataGridView не делает этого.

Этого вообще можно добиться? И, если да, как сделать так, чтобы вертикальная полоса прокрутки была всегда видимой?

Ответы [ 2 ]

6 голосов
/ 23 января 2009

Попробуйте создать подкласс DataGridView и обработать событие VerticalScrollBar VisibleChanged. Там вы сможете установить для свойства Visible значение True, переопределяя поведение по умолчанию.

Как-то так, я думаю ...

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

        void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
        {
            VerticalScrollBar.Visible = true;
        }
     }
1 голос
/ 21 декабря 2011

В моем случае (пере) сортировка сетки помогла. Попробуйте это так:

 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);
 }
...