最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# Winform實(shí)現(xiàn)自定義分頁(yè)控件

 更新時(shí)間:2023年07月19日 08:57:19   作者:Csharp 小記  
一些第三方的分頁(yè)控件要么就是界面不夠美觀大方,要么就是使用起來(lái)感覺(jué)很麻煩,所以本文就為大家介紹一下如何利用Winform自定義分頁(yè)控件,需要的可以參考一下

前言

其實(shí),也用過(guò)一些第三方的分頁(yè)控件;都是感覺(jué)很奇怪,要么就是界面不夠美觀大方,要么就是使用起來(lái)感覺(jué)很麻煩。想想覺(jué)得這玩意應(yīng)該挺簡(jiǎn)單的啊,所以就決定還是寫(xiě)一個(gè)適合自己的吧。

一向簡(jiǎn)潔的我,終究只會(huì)造就一個(gè)簡(jiǎn)單的結(jié)果。所以注定這個(gè)控件足夠簡(jiǎn)單。

實(shí)現(xiàn)方法

1.新建一個(gè)用戶控件,在上面拖幾個(gè)Label和TextBox控件,效果如下:

2.在代碼頁(yè)面分別定義以下屬性

        public Action<int> GetPageData { get; set; }
        private Color _FontColor;
        [Browsable(true), Description("設(shè)置字體顏色")]
        public Color FontColor
        {
            get => _FontColor; set
            {
                lb_down.ForeColor = lb_end.ForeColor = lb_go.ForeColor = lb_home.ForeColor = lb_page.ForeColor = lb_up.ForeColor = value;
            }
        }
        private int _DataCount;
        [Description("數(shù)據(jù)總數(shù)量")]
        public int DataCount
        {
            get => _DataCount;
            set
            {
                _DataCount = value;
                lb_page.Text = PageIndex + "/" + PageTotal;
            }
        }
        private int _PageSize;
        [Description("頁(yè)顯示數(shù)量")]
        public int PageSize
        {
            get
            {
                return _PageSize <= 0 ? 50 : _PageSize;
            }
            set
            {
                _PageSize = value;
                lb_page.Text = PageIndex + "/" + PageTotal;
            }
        }
        private int _PageTotal;
        [Description("總頁(yè)數(shù)")]
        public int PageTotal
        {
            get
            {
                if (DataCount % PageSize == 0)
                {
                    _PageTotal = DataCount / PageSize;
                }
                else
                {
                    _PageTotal = DataCount / PageSize + 1;
                }
                return _PageTotal <= 0 ? 1 : _PageTotal;
            }
        }
???????        private int _PageIndex;
        [Description("當(dāng)前頁(yè)數(shù)")]
        public int PageIndex
        {
            get
            {
                return _PageIndex <= 0 ? 1 : _PageIndex;
            }
            private set
            {
                _PageIndex = value;
                if (_PageIndex <= 0)
                {
                    _PageIndex = 1;
                }
                if (_PageIndex > PageTotal)
                {
                    _PageIndex = PageTotal;
                }
                if (GetPageData != null)
                {
                    GetPageData(_PageIndex);
                    lb_page.Text = _PageIndex + "/" + PageTotal;
                }
            }
        }

3.針對(duì)每個(gè)Label對(duì)應(yīng)的屬性做點(diǎn)擊處理

private void lb_home_Click(object sender, EventArgs e)
        {
            PageIndex = 1;
        }
        private void lb_up_Click(object sender, EventArgs e)
        {
            PageIndex--;
        }
        private void lb_down_Click(object sender, EventArgs e)
        {
            PageIndex++;
        }
        private void lb_end_Click(object sender, EventArgs e)
        {
            PageIndex = PageTotal;
        }
        private void lb_go_Click(object sender, EventArgs e)
        {
            if (int.TryParse(txt_num.Text, out int result))
            {
                PageIndex = result;
            }
        }
???????        private void txt_num_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(e.KeyChar == '\b' || (e.KeyChar >= '0' && e.KeyChar <= '9')))
            {
                e.Handled = true;
            }
        }

4.好了,沒(méi)了,控件結(jié)束了,簡(jiǎn)單吧。

5.再來(lái)看下使用方式,首先就是在獲取到數(shù)據(jù)之后,把DataCount屬性賦值數(shù)據(jù)的總數(shù)量

 private async Task GetPageData()
 {
     //...獲取服務(wù)端數(shù)據(jù)的代碼
     BindList.SetData(result.Data);
     pageEx1.DataCount = result.DataCount;
}

6.然后就是做換頁(yè)的處理了,也就是使用GetPageData獲取到頁(yè)碼之后,重新進(jìn)行數(shù)據(jù)獲取即可

 pageEx1.GetPageData = async s =>
            {
                PageIndex = s;
                await GetPageData();
            };

7.控件簡(jiǎn)單,功能滿足,使用方便。這不是理想中的控件么?

實(shí)現(xiàn)效果

到此這篇關(guān)于C# Winform實(shí)現(xiàn)自定義分頁(yè)控件的文章就介紹到這了,更多相關(guān)C# Winform分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#基礎(chǔ)入門之算法:交換

    C#基礎(chǔ)入門之算法:交換

    本文主要介紹了C#中算法:交換的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • C#封裝HttpClient實(shí)現(xiàn)HTTP請(qǐng)求處理

    C#封裝HttpClient實(shí)現(xiàn)HTTP請(qǐng)求處理

    HttpClient作為.NET框架中處理HTTP請(qǐng)求的核心組件,為我們提供了強(qiáng)大而靈活的API,本文將介紹一個(gè)完整的HttpRequest類封裝實(shí)現(xiàn),并深入探討HTTP請(qǐng)求處理的最佳實(shí)踐
    2025-06-06
  • C# 設(shè)計(jì)模式系列教程-橋接模式

    C# 設(shè)計(jì)模式系列教程-橋接模式

    橋接模式降低了沿著兩個(gè)或多個(gè)維度擴(kuò)展時(shí)的復(fù)雜度,防止類的過(guò)度膨脹,解除了兩個(gè)或多個(gè)維度之間的耦合,使它們沿著各自方向變化而不互相影響。
    2016-06-06
  • 詳解C#設(shè)計(jì)模式編程中的模板方法模式使用

    詳解C#設(shè)計(jì)模式編程中的模板方法模式使用

    這篇文章主要介紹了C#設(shè)計(jì)模式編程中的模板方法模式,模板方法模式比較好理解,即設(shè)定好算法骨架以后進(jìn)行代碼的反復(fù)利用,需要的朋友可以參考下
    2016-02-02
  • 詳解c# 可空類型(Nullable)

    詳解c# 可空類型(Nullable)

    這篇文章主要介紹了c# 可空類型(Nullable)的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • WPF實(shí)現(xiàn)輪播圖效果(圖片、視屏)

    WPF實(shí)現(xiàn)輪播圖效果(圖片、視屏)

    這篇文章主要介紹了WPF實(shí)現(xiàn)輪播圖效果,以下是一個(gè)使用WPF技術(shù)實(shí)現(xiàn)圖片和視屏輪播的簡(jiǎn)單案例代碼示例,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,感興趣的小伙伴可以自己動(dòng)手試試
    2023-10-10
  • C#如何連接MySQL數(shù)據(jù)庫(kù)

    C#如何連接MySQL數(shù)據(jù)庫(kù)

    這篇文章主要介紹了C#如何連接MySQL數(shù)據(jù)庫(kù),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-10-10
  • C#獲取串口列表實(shí)現(xiàn)實(shí)時(shí)監(jiān)控串口

    C#獲取串口列表實(shí)現(xiàn)實(shí)時(shí)監(jiān)控串口

    本文主要介紹兩種獲取串口列表的方法,比較簡(jiǎn)單,方便大家使用,另外分享了一個(gè)已封裝的API,需要的朋友可以參考下。
    2016-05-05
  • 關(guān)于C#中ajax跨域訪問(wèn)問(wèn)題

    關(guān)于C#中ajax跨域訪問(wèn)問(wèn)題

    最近做項(xiàng)目,需要跨域請(qǐng)求訪問(wèn)數(shù)據(jù)問(wèn)題。下面通過(guò)本文給大家分享C#中ajax跨域訪問(wèn)代碼詳解,需要的朋友可以參考下
    2017-05-05
  • c# 類型的字段和方法設(shè)計(jì)建議

    c# 類型的字段和方法設(shè)計(jì)建議

    這篇文章主要介紹了c# 字段和方法設(shè)計(jì)建議,幫助大家更好的理解和使用c#編程語(yǔ)言,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論

阿合奇县| 浦东新区| 山东省| 南开区| 泗阳县| 南京市| 新建县| 尚志市| 广水市| 邻水| 班玛县| 仁化县| 厦门市| SHOW| 蒙山县| 北川| 榆中县| 唐河县| 通渭县| 潮安县| 云安县| 县级市| 梅州市| 松江区| 江油市| 方正县| 大名县| 东城区| 垫江县| 普定县| 卢龙县| 松潘县| 阳信县| 宜宾县| 海兴县| 五台县| 十堰市| 上虞市| 四平市| 大城县| 虎林市|