Sb.6:自定义分页控件-winform

背景:项目需要查询一个数据信息,并以报表形式展示,网上找了好几个都不太满意,感觉不是很难的东西,所以就写个博客,放个Git连接,方便同志们使用

需求:封装一个控件,具备“上一页”、“下一页”、“首页”、“尾页”按钮,并能够根据当前查询的分页数据显示总共多少页,当前处于第几页。按钮触发后如果符合条件需要切换页面将事件发送出去。

做法:1、新建一个UserControl,插入几个按钮及label,合理布局一下;(布局如下)

2、对四个按钮添加 MouseClick事件,并实现点击业务,代码如下:

复制代码
        private void Button_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {
                if (PageCount == 0) return;
                Button button = (Button)sender;
                int tag = int.Parse(button.Tag.ToString());
                switch (tag)
                {
                    case -2:
                        if (CurrentPageNub == 1 || CurrentPageNub == 0)
                        {
                            return;
                        }
                        CurrentPageNub = 1;
                        break;
                    case -1:
                        if (CurrentPageNub == 1 || CurrentPageNub == 0)
                        {
                            return;
                        }
                        CurrentPageNub -= 1;
                        break;
                    case 1:
                        if (CurrentPageNub == PageCount || CurrentPageNub == 0)
                        {
                            return;
                        }
                        CurrentPageNub += 1;
                        break;
                    case 2:
                        if (CurrentPageNub == PageCount || CurrentPageNub == 0)
                        {
                            return;
                        }
                        CurrentPageNub = PageCount;
                        break;
                    default:
                        break;
                }
                DelCtrlHasChange();
                ShowPageTip();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
复制代码
复制代码
        public void ShowPageTip()
        {
            try
            {
                this.Invoke(new Action(() => {
                    this.PageIndex.Text = $"第{CurrentPageNub}页/共{PageCount}页";
                }));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
复制代码

其中  tag 是前面添加的四个按钮的Tag;

3、DelCtrlHasChange方法是发送控件变化的事件,当页码发生变化的时候通知订阅方;

4、其实就这么简单。

 

posted @   晨耕暮饮  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示