Qu'est-ce qu'une ListViewSubtemCollection utilise pour ses clés?
Question
J'essaie d'obtenir la valeur de certains ListViewSubItems, mais je n'ai aucune idée des valeurs qu'il utilise pour ses clés. J'ai un code simple:
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
ListViewItem item = e.Item as ListViewItem;
string val = item.SubItems[???].ToString();
}
Le ??? la partie est où j'ai un problème. Je n'arrive pas à comprendre quelles sont les clés. J'ai essayé les noms de colonne du ListView sans succès. Je voudrais utiliser cette méthode au lieu d'utiliser des index numériques.
La solution
La clé du ListViewSubItem
est la propriété Name
comme décrit ici .
Définir le nom égal au nom de la colonne vous permettrait d'indexer dans les sous-éléments par le nom de la colonne.
Et du code à titre d'exemple
ListViewItem myListViewItem = new ListViewItem ();
ListViewItem.ListViewSubItem myListViewSubItem = new ListViewItem.ListViewSubItem ();
myListViewSubItem.Text = "Ceci sera affiché"
myListViewSubItem.Name = " ma clé " ;;
myListViewItem.SubItems.Add (myListViewSubItem);
ListViewItem.ListViewSubItem subItem = myListViewItem.SubItems [" ma clé "]];
Autres conseils
Vous pouvez uniquement utiliser l'index de colonne pour ajouter des sous-éléments, mais vous pouvez en faciliter la lecture en créant une énumération contenant l'index de chacune de vos colonnes.
Les sous-éléments ne sont classés que par index de colonne, malheureusement. Donc, vous devez y accéder comme:
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
ListViewItem item = e.Item as ListViewItem;
string val = item.SubItems[0].ToString();
}