亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中實現單擊LISTVIEW的COLUMN進行排序

2023-05-10 18:49:29
字體:
來源:轉載
供稿:網友

我們在使用一些軟件時,經常會發現通過點擊ListView的列能夠改變內容的排序順序,那么在C#中能不能做到這一點呢?回答是肯定的。具體思路是通過控件類ListView派生出一個新類EastSpider,在EastSpider類中定義自己需要的域、屬性、方法和事件,主要是通過類中的一個事件來捕捉用戶單擊事件,并定義相關的方法來處理,即實現對內容的排序。

這里可以可實現按時間,字符,數字排序。具體源代碼如下:(如有錯誤請評論通知)

using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Windows.Forms;
using System.Drawing;

namespace ListViewControl
{
    /// <summary>
    /// Summary description for UserControl1.
    /// </summary>
    public class EastSpider : System.Windows.Forms.ListView
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        ///
        private Comparer myComparer;
        private ArrayList colTypes = new ArrayList();

        private System.ComponentModel.Container components = null;

        /// <summary>
        /// Sort Interface
        /// </summary>

        public class Comparer : IComparer
        {
            private int column;
            private int sign;
            private EastSpider.ColumnTypeEnum colType;

            public Comparer()
            {
                column = 0;
                sign = 1;
                colType = EastSpider.ColumnTypeEnum.ColumnTypeText;
            }

            public int Column
            {
                set
                {
                    column = value;
                }
                get
                {
                    return column;
                }
            }

            public int Sign
            {
                set
                {
                    sign = value;
                }
                get
                {
                    return sign;
                }
            }

            public ColumnTypeEnum ColType
            {
                set
                {
                    colType = value;
                }
                get
                {
                    return colType;
                }
            }

            public int Compare(object o1,object o2)
            {
                ListViewItem li1 = (ListViewItem)o1;
                ListViewItem li2 = (ListViewItem)o2;

                string s1,s2;

                try
                {
                    if (column == 0)
                    {
                        s1 = li1.Text;
                        s2 = li2.Text;

                        //return sign * String.Compare(s1,s2);
                    }

                    else
                    {
                        s1 = li1.SubItems[column].Text;
                        s2 = li2.SubItems[column].Text;
                    }

                    if (s1.Length == 0)
                    {
                        if (s2.Length > 0)
                        {
                            return (-sign);
                        }
                        else
                        {
                            return 0;
                        }
                    }
                    else if (s2.Length == 0)
                    {
                        return sign;
                    }

                    switch (colType)
                    {
                        case ColumnTypeEnum.ColumnTypeNumber:

                            long d1 = long.Parse(s1);
                            long d2 = long.Parse(s2);

                            if (d1 < d2)
                            {
                                return (-sign);
                            }
                            else if (d1 > d2)
                            {
                                return sign;
                            }
                            else
                            {
                                return 0;
                            }

                            
                        case ColumnTypeEnum.ColumnTypeDate:

                            DateTime t1 = DateTime.Parse(s1);
                            DateTime t2 = DateTime.Parse(s2);

                            return sign*DateTime.Compare(t1,t2);

                        default:

                            return sign * String.Compare(s1,s2);

                    }
                }
                catch
                {
                    return (0);
                }
            }
        }

        /// <summary>
        /// 排序類型
        /// </summary>

        [Category("SortType"),Description("The Sort Type of Column you wanted do")]

        public enum ColumnTypeEnum
        {
            ColumnTypeText = 0,
            ColumnTypeDate = 1,
            ColumnTypeNumber = 2
        }

        /// <summary>
        /// Clear All Items And Columns
        /// </summary>
        private void ClearAll()
        {
            Clear();
            ClearColumns();
        }

        /// <summary>
        /// Clear All Item
        /// </summary>
        private new void Clear()
        {
            base.Items.Clear();
        }

        /// <summary>
        /// Clear All Columns And ColType
        /// </summary>
        private void ClearColumns()
        {
            base.Columns.Clear();
            colTypes.Clear();
        }

        public void AddColumn(string caption,ColumnTypeEnum columnType,HorizontalAlignment ha,int width)
        {
            ColumnHeader ch = new ColumnHeader();
            ch.Text = caption;
            ch.TextAlign = ha;
            ch.Width = width;
            base.Columns.Add(ch);
            colTypes.Add(columnType);
        }

        /// <summary>
        /// Add Items
        /// </summary>
        /// <param name="item"></param>
        /// <param name="bgcolor"></param>
        /// <returns></returns>

        public int AddRow(ListViewItem item,Color bgcolor)
        {
            //ListViewItem li = new ListViewItem(args);
            item.UseItemStyleForSubItems = true;
            item.BackColor = bgcolor;
            Items.Add(item);
            return item.Index;
        }

        /// <summary>
        /// 點擊事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        protected void ev_ColumnClick(object sender,System.Windows.Forms.ColumnClickEventArgs e)
        {
            //MessageBox.Show(e.Column.ToString());
            myComparer.Column = e.Column;
            myComparer.Sign = (base.Sorting == SortOrder.Ascending)? -1:1;
            myComparer.ColType = (ColumnTypeEnum)colTypes[e.Column];

            base.BeginUpdate();

            switch (base.Sorting)
            {
                case SortOrder.Ascending:
                    base.Sorting = SortOrder.Descending;
                    break;
                case SortOrder.Descending:
                    base.Sorting = SortOrder.Ascending;
                    break;
            }

            base.EndUpdate();
        }

        /// <summary>
        /// Override onclick
        /// </summary>
        /// <param name="e"></param>

        protected override void OnClick( System.EventArgs e)
        {
            base.OnClick(e);
        }

        /// <summary>
        /// Override OnMouseDown
        /// </summary>
        /// <param name="e"></param>

        protected override void OnMouseDown( System.Windows.Forms.MouseEventArgs e)
        {
            OnClick(e);
        }

        /// <summary>
        /// InitializeComponent
        /// </summary>

        public EastSpider()
        {
            // This call is required by the Windows.Forms Form Designer.

            base.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.ev_ColumnClick);
            myComparer = new Comparer();
            base.ListViewItemSorter = (IComparer)myComparer;

            //InitializeComponent();

            // TODO: Add any initialization after the InitForm call

        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                //if (components != null)
                //{
                //    components.Dispose();
                //}
            
                colTypes.Clear();
                base.Dispose(disposing);
            }
        }

        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
        }
        #endregion
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品影片在线观看| 精品久久中文字幕久久av| 亚洲亚裔videos黑人hd| 美日韩精品免费观看视频| 黄色精品在线看| 欧美视频在线免费| 久久久精品免费视频| 日韩av影片在线观看| 成人午夜激情免费视频| 中文字幕av日韩| 久久婷婷国产麻豆91天堂| 国产视频亚洲视频| 久久亚洲成人精品| 国产日产久久高清欧美一区| 欧美一级高清免费播放| 国内精品久久久久久久| 26uuu另类亚洲欧美日本老年| 成人在线国产精品| 国产欧美精品在线播放| 久久影视电视剧免费网站清宫辞电视| 伦伦影院午夜日韩欧美限制| 日韩欧美中文字幕在线观看| 91视频免费网站| 91香蕉亚洲精品| 欧美日韩激情小视频| 亚洲a级在线播放观看| 亚洲综合在线播放| 亚洲影院在线看| 欧美激情日韩图片| 亚洲人免费视频| 久久精品视频在线观看| 亚洲国产美女精品久久久久∴| 综合激情国产一区| 国产精品亚洲美女av网站| 亚洲免费视频一区二区| 成人激情春色网| 欧美性猛交xxxx富婆弯腰| 国产精品久久久久7777婷婷| 91成人福利在线| 欧美成人国产va精品日本一级| 免费99精品国产自在在线| 欧美日本中文字幕| 欧美性色19p| 久久国产精品久久久久| 欧美大码xxxx| 久久综合亚洲社区| 国产视频精品一区二区三区| 在线观看成人黄色| 久久69精品久久久久久国产越南| 国产精品女人久久久久久| 中文字幕亚洲欧美在线| 亚洲自拍偷拍区| 亚洲欧美日韩精品久久亚洲区| 国产精品扒开腿做爽爽爽男男| 成人综合国产精品| 91在线精品视频| 欧美精品在线免费播放| 性色av一区二区三区在线观看| 人九九综合九九宗合| 精品亚洲国产成av人片传媒| 亚洲电影天堂av| 精品国内自产拍在线观看| 精品国产一区二区三区久久狼5月| 精品国产一区av| 欧美精品激情在线| 亚洲精品国产成人| 中文字幕亚洲字幕| 亚洲性视频网址| 日韩小视频在线| 中文字幕精品国产| 国产91精品久| 欧美精品videosex极品1| 欧美视频在线观看免费| 97**国产露脸精品国产| 日韩国产欧美精品一区二区三区| 日韩美女视频免费在线观看| 大荫蒂欧美视频另类xxxx| 精品视频9999| 色妞欧美日韩在线| 欧美中文字幕视频| 亚洲无限乱码一二三四麻| 亚洲欧美中文字幕在线一区| 91在线网站视频| 91产国在线观看动作片喷水| 日韩欧美中文字幕在线观看| 日韩电影在线观看永久视频免费网站| 欧美午夜www高清视频| 在线视频欧美日韩精品| 欧美激情xxxx性bbbb| 亚洲人成人99网站| 国产欧亚日韩视频| 国产精品稀缺呦系列在线| 国产精品91在线观看| 亚洲精品一区二区三区不| 国产一区二区精品丝袜| 亚洲一区二区在线播放| xxxx欧美18另类的高清| 成人av番号网| 中文字幕免费精品一区| 久久精品国产亚洲一区二区| 久久国产一区二区三区| 国产精品免费看久久久香蕉| 国产亚洲精品久久久优势| 7m第一福利500精品视频| 国产精品福利在线观看网址| 欧美一级电影在线| 国产这里只有精品| 日本一本a高清免费不卡| 精品福利在线观看| 91视频88av| 亚洲成人网在线观看| 精品日韩中文字幕| 欧美在线激情视频| 亚洲一区www| 亚洲精品国产拍免费91在线| 亚洲va久久久噜噜噜| 欧美亚洲午夜视频在线观看| 51久久精品夜色国产麻豆| 91在线观看免费高清完整版在线观看| 亚洲精品中文字| 欧美黑人狂野猛交老妇| 欧美黑人一级爽快片淫片高清| 欧美在线www| 在线播放精品一区二区三区| 亚洲男人天堂2019| 2018国产精品视频| 亚洲欧美综合精品久久成人| 日本伊人精品一区二区三区介绍| 亚洲成人av在线| 国产97在线视频| 欧美在线视频在线播放完整版免费观看| 97视频人免费观看| 亚洲欧美国产视频| 日韩av免费观影| 久久成人免费视频| 91在线观看免费高清完整版在线观看| 国产精品黄视频| 欧美xxxwww| 18一19gay欧美视频网站| 91在线|亚洲| 欧美国产极速在线| 亚洲精品福利视频| 亚洲成人免费在线视频| 欧美日韩高清在线观看| 亚洲精品一区二区三区不| 8x海外华人永久免费日韩内陆视频| 亚洲欧美日韩一区在线| 久久久女人电视剧免费播放下载| 欧美激情日韩图片| 欧美性受xxxx白人性爽| 日本亚洲精品在线观看| 中文字幕精品视频| 成人精品在线观看| 国产人妖伪娘一区91| 欧美国产亚洲精品久久久8v| 91久久夜色精品国产网站| 欧美激情免费看| 色哟哟网站入口亚洲精品| 韩国日本不卡在线| 欧美精品福利在线| 国产精品一二区| 久久av.com| 亚洲欧美日韩直播| 亚洲国产高清福利视频|