ScrollBar em DataGridView
-
19-08-2019 - |
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?
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);
}