Bordas de célula programaticamente mudança individual em um WinForms DataGridView
-
13-09-2019 - |
Pergunta
Eu preciso alterar programaticamente a fronteira de células individuais em um WinForms DataGridView. Ao procurar na net, encontrei este link ( http://bytes.com/groups/net-vb/501128-changing-datagridview-cell-borders-runtime ), que é a mesma coisa que eu estou tentando fazer; no entanto, não existe um exemplo de código da solução, que é
"Então, você pode herdar a partir da DataGridViewCell método AdjustCellBorderStyle classe e substituições para obter um versão do DataGridViewCell personalizado. Então você pode usar este personalizado DataGridViewCell em sua DataGridView. Nota: Em sua DataGridViewCell personalizado, você deve expor um DataGridViewAdvancedBorderStyle membro do público de modo que pode codificar DataGridView definir esta informação membro do estilo de borda para a célula. Em seguida, no implementação AdjustCellBorderStyle, você deve verificar a este DataGridViewAdvancedBorderStyle membro do público e retorno correspondente DataGridViewAdvancedBorderStyle. Então PaintCells DataGridView pode usá-lo para pintar o seu celular. ".
Eu estou tendo dificuldade em entender implementação desta solução. Alguém poderia traduzir o acima em trabalhar código VB.Net e fornecer um exemplo de chamá-lo para mudar as fronteiras de uma célula individual?
Solução
Aqui está um exemplo preparado que faz o que você precisa, escondido entre a funcionalidade extra de definir a cor de fundo.
http://www.codeproject.com/KB/grid/hulihui_CustomDataGridVie.aspx
Olhe para as linhas
// must draw border for grid scrolling horizontally
e.Graphics.DrawRectangle(gridPenColor, rect1);
Essa linha desenha uma borda células, de modo a alterar um células individuais mudança fronteira os args de evento (classe CellBackColorEventArgs) para incluir o que propriedades deseja descrever a fronteira. Em seguida, no método DrawCellBackColor desenhar a borda com base nestes aprovada em propriedades (e qualquer outra coisa que você quer desenhar na célula)