예제 #1
0
        void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            // Determine if clicked column is already the column that is being sorted.
            if (e.Column == lvwColumnSorter.SortColumn)
            {
                // Reverse the current sort direction for this column.
                if (lvwColumnSorter.Order == SortOrder.Ascending)
                {
                    lvwColumnSorter.Order = SortOrder.Descending;
                    ListViewExtensions.SetSortIcon(listView1, e.Column, SortOrder.Descending);
                }
                else
                {
                    lvwColumnSorter.Order = SortOrder.Ascending;
                    ListViewExtensions.SetSortIcon(listView1, e.Column, SortOrder.Ascending);
                }
            }
            else
            {
                // Set the column number that is to be sorted; default to ascending.
                lvwColumnSorter.SortColumn = e.Column;
                lvwColumnSorter.Order      = SortOrder.Ascending;
                ListViewExtensions.SetSortIcon(listView1, e.Column, SortOrder.Ascending);
            }

            // Perform the sort with these new sort options.
            this.listView1.Sort();
        }
예제 #2
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;
            }
        }