O que faz um uso ListViewSubtemCollection para suas chaves?
Pergunta
Eu estou tentando obter o valor de alguns ListViewSubItems, mas não tenho idéia de quais os valores que ele usa para suas chaves. Eu tenho algum código simples:
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
ListViewItem item = e.Item as ListViewItem;
string val = item.SubItems[???].ToString();
}
O ??? parte é onde eu estou tendo um problema. Eu não posso descobrir o que as teclas são. Eu tentei os nomes do ListView sem sorte coluna. Eu gostaria de usar este método em vez de usar índices numéricos.
Solução
A chave do ListViewSubItem
é propriedade Name
como descrito aqui .
Definir o nome igual ao nome da coluna, lhe permitiria índice para os subitens pelo nome da coluna.
E algum código como um exemplo
ListViewItem myListViewItem = new ListViewItem();
ListViewItem.ListViewSubItem myListViewSubItem = new ListViewItem.ListViewSubItem();
myListViewSubItem.Text = "This will be displayed";
myListViewSubItem.Name = "my key";
myListViewItem.SubItems.Add(myListViewSubItem);
ListViewItem.ListViewSubItem subItem = myListViewItem.SubItems["my key"];
Outras dicas
Você só pode usar o índice da coluna para adicionar subitens, mas você pode torná-lo mais fácil de ler, fazendo uma enumeração que contém o índice de cada uma de suas colunas.
SubItems só são ordenados por índice da coluna unluckily. Então você teria que acessá-los como:
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
ListViewItem item = e.Item as ListViewItem;
string val = item.SubItems[0].ToString();
}