[ad_1]
Vous trouverez ci-dessous le code que j’utilise pour ajouter des éléments à la liste.
OpenFileDialog FLoc = new OpenFileDialog(); Application.DoEvents(); FLoc.Title = "Select Host Name File"; FLoc.Filter = "TXT files|*.txt"; FLoc.InitialDirectory = @"C:\"; if (FLoc.ShowDialog() == DialogResult.OK) { try { FileName = FLoc.FileName; FileLines = File.ReadAllLines(FileName); if (listView1.Items.Count > 0) { foreach (ListViewItem itemR in listView1.Items) { itemR.Checked = false; itemR.Remove(); } int LC = 0; foreach (var item1 in FileLines) { this.listView1.Focus(); LC = listView1.Items.IndexOf(listView1.Items.Add(item1)); // listView1.Items[LC].SubItems.Add(""); // listView1.Items[LC].Checked = true; } comboBox1.ResetText(); DTP.Value = DateTime.Today; } else { foreach (var item2 in FileLines) { //below condition to avoid duplicate entries in listview //if (listView1.FindItemWithText(item) == null) //{ int LC = listView1.Items.IndexOf(listView1.Items.Add(item2)); listView1.Items[LC].Checked = true; //} } }
ci-dessous est la classe que j’utilise pour trier la colonne listview
class ListViewItemComparer : IComparer { private int col; private System.Windows.Forms.SortOrder order; public ListViewItemComparer() { col = 0; order = System.Windows.Forms.SortOrder.Ascending; } public ListViewItemComparer(int column, System.Windows.Forms.SortOrder order) { col = column; this.order = order; } public int Compare(object x, object y) { int returnVal = -1; returnVal = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text); // Determine whether the sort order is descending. if (order == System.Windows.Forms.SortOrder.Descending) // Invert the value returned by String.Compare. returnVal *= -1; return returnVal; } }
après avoir inclus cette colonne de tri de liste. si j’essaie de trier les colonnes, ouvrez le fichier pour ajouter des éléments à la liste et obtenez un message d’erreur ci-dessous. toute aide serait très appréciée.
<br /> InvalidArgument=Value of '3' is not valid for 'index'. Parameter name: index<br />
Ce que j’ai essayé :
J’ai parcouru toutes les pages Google mais je n’ai trouvé aucune solution parfaite.
Solution 1
j’ai finalement trouvé une solution sur moi-même. Mais le pire, c’est que je ne sais pas comment ça marche…
ajouté la ligne ci-dessous avant la partie de suppression des éléments Listview, ce qui a résolu le problème
listView1.Sorting = System.Windows.Forms.SortOrder.None;
PS : Peut-être qu’avant de recréer les éléments de la liste, j’ai réglé le tri sur NONE, ce qui résout mon problème.
Solution 2
ListView1.ListViewItemSorter = Rien
[ad_2]
コメント