欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

實現(xiàn)方法

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

2.在代碼頁面分別定義以下屬性

        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("頁顯示數(shù)量")]
        public int PageSize
        {
            get
            {
                return _PageSize <= 0 ? 50 : _PageSize;
            }
            set
            {
                _PageSize = value;
                lb_page.Text = PageIndex + "/" + PageTotal;
            }
        }
        private int _PageTotal;
        [Description("總頁數(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)前頁數(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.針對每個Label對應(yīng)的屬性做點擊處理

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.好了,沒了,控件結(jié)束了,簡單吧。

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

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

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

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

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

實現(xiàn)效果

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

相關(guān)文章

  • 詳解C#如何加密解密RAR文件

    詳解C#如何加密解密RAR文件

    這篇文章主要為大家詳細(xì)介紹了C#如何實現(xiàn)加密解密RAR文件的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#9.0推出的4個新特性介紹

    C#9.0推出的4個新特性介紹

    這篇文章介紹了C#9.0推出的4個新特性,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#滾動字幕的實現(xiàn)方法

    C#滾動字幕的實現(xiàn)方法

    這篇文章主要介紹了C#滾動字幕的實現(xiàn)方法,主要講述了Graphics.DrawString函數(shù)的應(yīng)用方法,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • c#(Socket)異步套接字代碼示例

    c#(Socket)異步套接字代碼示例

    c#(Socket)異步套接字代碼示例...
    2007-03-03
  • C# 中的IComparable和IComparer的使用及區(qū)別

    C# 中的IComparable和IComparer的使用及區(qū)別

    這篇文章主要介紹了C# 中的IComparable和IComparer的使用及區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#中多種高效定時器方法的使用詳解

    C#中多種高效定時器方法的使用詳解

    本文主要介紹了C#中多種高效定時器方法的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • WPF中窗體最大化問題的解決方法

    WPF中窗體最大化問題的解決方法

    這篇文章主要給大家介紹了關(guān)于WPF中窗體最大化問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用wpf具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 淺談c# 浮點數(shù)計算

    淺談c# 浮點數(shù)計算

    本文通過具體的示例給大家演示了下C#中浮點數(shù)運算所遇到的問題及解決方法,有需要的小伙伴可以參考下
    2017-09-09
  • 基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進行模擬登陸和瀏覽實例

    基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進行模擬登陸和瀏覽實例

    這篇文章主要介紹了基于WebClient實現(xiàn)Http協(xié)議的Post與Get對網(wǎng)站進行模擬登陸和瀏覽的方法,以實例形式詳細(xì)分析了WebClient模擬POST與GET登陸與瀏覽的過程,對于C#項目開發(fā)來說具有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • 編輯IL文件 修改DLL文件的方法

    編輯IL文件 修改DLL文件的方法

    下面小編就為大家?guī)硪黄庉婭L文件 修改DLL文件的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論