No se pueden agregar elementos de vista de lista después de ordenar la columna

programación


A continuación se muestra el código que estoy usando para agregar elementos a la vista de lista.

C#
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;
                           //}


                       }
                   }

a continuación se muestra la clase que estoy usando para ordenar la columna de vista de lista

C#
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;
       }
   }

después de incluir esta columna de clasificación de vista de lista. Si intento ordenar columnas, abro el archivo para agregar elementos a la vista de lista y aparece el siguiente mensaje de error. Cualquier ayuda sería muy apreciada.

<br />
InvalidArgument=Value of '3' is not valid for 'index'. Parameter name: index<br />

Lo que he probado:

Revisé todas las páginas de Google pero no pude encontrar ninguna solución perfecta.

Solución 1

Finalmente encontré una solución para mí. Pero lo malo es que no estoy seguro de cómo funciona…

Se agregó la siguiente línea antes de que los elementos de Listview eliminaran la parte que resolvió el problema.

C#
listView1.Sorting = System.Windows.Forms.SortOrder.None;

PD: Puede que antes de volver a crear los elementos de la vista de lista establecí la clasificación en NINGUNO, lo que resuelve mi problema.

コメント

タイトルとURLをコピーしました