C# Winform實現(xiàn)自定義分頁控件
前言
其實,也用過一些第三方的分頁控件;都是感覺很奇怪,要么就是界面不夠美觀大方,要么就是使用起來感覺很麻煩。想想覺得這玩意應(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# 中的IComparable和IComparer的使用及區(qū)別
這篇文章主要介紹了C# 中的IComparable和IComparer的使用及區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01基于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