C# ColumnHeader Free Space Background Color
-
23-09-2019 - |
Pergunta
Estou tentando desenhar colunas personalizadas em um controle fastObjectListView.
Até agora, o código funciona, mas o espaço livre do ColumnHeaders (então a peça que não contém nenhum cabeçalho de coluna ATM) ainda se baseia como padrão.
private void olvMain_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Black,
e.Bounds.X, e.Bounds.Y,
e.Bounds.Width, e.Bounds.Height);
e.Graphics.DrawRectangle(Pens.Lime,
e.Bounds.X - 1, e.Bounds.Y - 1,
e.Bounds.Width - 1, e.Bounds.Height - 1);
e.DrawText();
e.DrawDefault = false;
}
Eu adicionei:
e.DrawDefault = false;
Porque, sem isso, o estilo padrão do ColumnHeaders foi desenhado em cima do meu estilo personalizado, mas como o espaço livre do ColumnHeaderBar não contém nenhum columnHeaders, ele ainda é desenhado pelo estilo padrão.
Aqui está uma foto para esclarecer o que quero dizer com o espaço livre do ColumnHeader:Link da imagem
Desde já, obrigado.
Solução
A área que não é pintada de preto está fora da área dos clientes dos cabeçalhos - portanto, não é pintável pelo controle.
Não há maneira fácil de mudar a cor dessa área. Dê uma olhada em esta pergunta e sua resposta para ver algumas soluções possíveis.