Comment puis-je ListView.Items
à une List
?
C’est ce que j’ai essayé:
List list = lvFiles.Items.Cast().ToList();
mais j’ai reçu cette erreur:
Impossible de convertir l’object de type ‘System.Windows.Forms.ListViewItem’ en type ‘System.Ssortingng’.
Une ListViewItemCollection
est exactement ce que cela ressemble – une collection d’éléments ListViewItem
. Ce n’est pas une collection de chaînes. Votre code échoue au moment de l’exécution pour la même raison que ce code échouerait au moment de la compilation:
ListViewItem item = lvFiles.Items[0]; ssortingng text = (ssortingng) item; // Invalid cast!
Si vous voulez une liste de chaînes, chacune étant extraite de la propriété Text
d’un ListViewItem
, vous pouvez le faire facilement:
List list = lvFiles.Items.Cast() .Select(item => item.Text) .ToList();
La méthode Cast
essaiera essentiellement d’effectuer une boîte / unbox, donc elle échouera si les éléments de la liste ne sont pas déjà des chaînes. Essayez ceci à la place:
List list = lvFiles.Items.Cast() .Select(x => x.ToSsortingng()).ToList();
Ou ca
List list = lvFiles.Items.Cast() .Select(x => x.Text).ToList();
Essayez quelque chose comme ça
List list = lvFiles.Items.Cast().Select(x=> x.ToSsortingng()).ToList();
Essayez ceci en utilisant la méthode Select
:
pour le texte de la liste:
List listText = lvFiles.Items.Select(item => item.Text).ToList();
pour les valeurs de liste:
List listValues = lvFiles.Items.Select(item => item.Value).ToList();
Ou peut-être, pour les deux:
Dictionary files = lvFiles.Items.ToDictionary(key => key.Value, item => item.Text);