غير قادر على إضافة عناصر عرض القائمة بعد فرز العمود


يوجد أدناه الكود الذي أستخدمه لإضافة عناصر إلى عرض القائمة.

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


                       }
                   }

يوجد أدناه الفصل الذي أستخدمه لفرز عمود عرض القائمة

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

بعد تضمين عمود فرز عرض القائمة هذا. إذا حاولت فرز الأعمدة، فافتح الملف لإضافة عناصر إلى عرض القائمة وتلقي رسالة الخطأ أدناه. أي مساعدة ستكون موضع تقدير كبير.

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

ما حاولت:

لقد قمت بمراجعة جميع صفحات Google ولكن لم أجد أي حل مثالي.

الحل 1

وأخيرا وجدت الحل على نفسي. لكن الجزء السيء هو أنني لست متأكدًا من كيفية عمله …

تمت إضافة السطر أدناه قبل إزالة جزء Listview Items الذي أدى إلى حل المشكلة

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

ملاحظة: ربما قبل إعادة إنشاء عناصر عرض القائمة قمت بتسوية الفرز إلى NONE مما يحل مشكلتي.

الحل 2

ListView1.ListViewItemSorter = لا شيء

コメント

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