コード例 #1
0
        /// <summary>
        /// Sorts the list by the clicked column.
        /// </summary>
        /// <param name="e">EventArgs object</param>
        protected override void OnColumnClick(ColumnClickEventArgs e)
        {
            //locked = true;

            base.OnColumnClick(e);

            //using (new Hourglass(ShowHourglass))
            {
                ColumnHeader columnHeader = this.Columns[e.Column];

                // The comparer is stored in the Tag property
                FWCompareObject comparer = ((ColumnHeaderTag)columnHeader.Tag).compareObject;
                if (compareObjectComparersVal.FirstComparer == comparer)
                {
                    comparer.Ascending ^= true;
                }
                else
                {
                    compareObjectComparersVal.FirstComparer = comparer;
                }


                object     focusedObjectCache = FocusedObject;
                List <int> selectedObjectIDs  = new List <int>();

                BeforeSort(selectedObjectIDs);

                // Sort the cached objects.
                // The cache will ensure, that all objects are read.
                objectsCacheValue.Sort(compareObjectComparersVal);

                List <int> selectedIndizes = new List <int>();

                AfterSort(focusedObjectCache, selectedObjectIDs, selectedIndizes);

                // The current cache for ListViewItems is invalid now
                itemCache = null;

                // Redraw the list
                Refresh();

                // Set the sort icon (triangle in the column header)
                SortOrder sortOrder = comparer.Ascending ? SortOrder.Ascending : SortOrder.Descending;
                ListViewExtensions.SetSortIcon(this, e.Column, sortOrder);

                //locked = false;
            }
        }
コード例 #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="compareObject">Comparer object</param>
 public ColumnHeaderTag(FWCompareObject compareObject)
 {
     this.compareObject = compareObject;
 }