Pergunta

Eu tenho um winform em vs2008 que contém um DataGridView. A grade de dados contém uma lista com várias colunas. Estes são fixados largura, um exept que eu tenha configurado para tomar qualquer espaço é deixado e preencher a largura da vista. O winform é resizeable em todas as direções.

O problema que estou tentando resolver é que quando eu aumentar o tamanho vertical da janela desaparece barra de rolagem e as colunas tirar para a direita para preencher o espaço extra. O que eu gostaria que acontecesse é que a barra de rolagem vertical nunca desaparece. Definir ScrollBars para a vertical nas propriedades do DataGridView não faz isso.

este em tudo é possível alcançar? E, em caso afirmativo, como faço para obter a barra de rolagem vertical para estar sempre visível?

Foi útil?

Solução

Tente subclasse o DataGridView e manipulação de eventos VisibleChanged do verticalScrollBar. Você deve ser capaz de definir a propriedade Visible como True lá, substituindo o comportamento padrão.

Algo como isso, eu acho ...

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

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

Outras dicas

No meu caso, (re) ordenação da grelha ajudou. Tente sth como este:

 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);
 }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top