Como faço para texto align para um único subitem em um ListView usando C #?
-
05-09-2019 - |
Pergunta
Eu não era capaz de encontrar um lugar resposta sobre este tema aparentemente simples: é possível texto align de um único subitem em um controle WinForms ListView
?Se sim, como?
Eu gostaria de ter texto na mesma coluna alinhada de forma diferente.
Solução 4
Para referência futura, aqui está como eu resolver isso:
// Make owner-drawn to be able to give different alignments to single subitems
lvResult.OwnerDraw = true;
...
// Handle DrawSubItem event
private void lvResult_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
// This is the default text alignment
TextFormatFlags flags = TextFormatFlags.Left;
// Align text on the right for the subitems after row 11 in the
// first column
if (e.ColumnIndex == 0 && e.Item.Index > 11)
{
flags = TextFormatFlags.Right;
}
e.DrawText(flags);
}
// Handle DrawColumnHeader event
private void lvResult_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
// Draw the column header normally
e.DrawDefault = true;
e.DrawBackground();
e.DrawText();
}
Foi necessário para lidar com a DrawColumnHeader, caso contrário, nenhum texto ou coluna separadores seriam atraídos.
Outras dicas
A classe "ColumnHeader" tem uma propriedade "TextAlign" que vai mudar o alinhamento de todos os subitens na coluna. Se você precisa de algo mais extravagante que você poderia sempre usar o evento "DrawSubItem" e torná-lo proprietário desenhado.
exemplo:
listView1.Columns[1].TextAlign = HorizontalAlignment.Right;
irá definir "1" alinhamento da coluna para a direita ??p>