最终运行效果图


自定义控件源码

可根据实际需求更改翻页按钮样式、总页数、每页多少条等属性

  public partial class WinFormPager : UserControl{#region Membersprivate string _BtnTextFirst = "首页";private string _BtnTextLast = "末页";private string _BtnTextNext = "下页";private string _BtnTextPrevious = "上页";private DisplayStyleEnum _DisplayStyle = DisplayStyleEnum.图片;private string _JumpText = "跳转";private int _PageCount;private int _PageIndex = 1;private int _PageSize = 10;private int _RecordCount;private TextImageRalitionEnum _TextImageRalition = TextImageRalitionEnum.图片显示在文字前方;private string PagerText = "共{0}条,第{1}页,共{2}页,每页{3}条";public enum DisplayStyleEnum{图片 = 1,图片及文字 = 3,文字 = 2}public delegate void EventHandler(object sender, EventArgs e);public enum TextImageRalitionEnum{图片显示在文字后方 = 4,图片显示在文字前方 = 3,图片显示在文字上方 = 1,图片显示在文字下方 = 2}[Description("更改页面索引事件"), Category("自定义事件")]public event EventHandler PageIndexChanged;[Category("自定义属性"), DefaultValue("首页"), Description("首页按钮文字,当DisplayStyle=文字或DisplayStyle=图片及文字时生效")]public string BtnTextFirst{get{return this._BtnTextFirst;}set{this._BtnTextFirst = value;this.SetDisplayStyle();}}[Description("末页按钮文字,当DisplayStyle=文字或DisplayStyle=图片及文字时生效"), DefaultValue("末页"), Category("自定义属性")]public string BtnTextLast{get{return this._BtnTextLast;}set{this._BtnTextLast = value;this.SetDisplayStyle();}}[DefaultValue("下一页"), Category("自定义属性"), Description("下一页按钮文字,当DisplayStyle=文字或DisplayStyle=图片及文字时生效")]public string BtnTextNext{get{return this._BtnTextNext;}set{this._BtnTextNext = value;this.SetDisplayStyle();}}[DefaultValue("上一页"), Description("上一页按钮文字,当DisplayStyle=文字或DisplayStyle=图片及文字时生效"), Category("自定义属性")]public string BtnTextPrevious{get{return this._BtnTextPrevious;}set{this._BtnTextPrevious = value;this.SetDisplayStyle();}}[Category("自定义属性"), DefaultValue(1), Description("显示类型:图片、文字、图片及文字")]public DisplayStyleEnum DisplayStyle{get{return this._DisplayStyle;}set{this._DisplayStyle = value;this.SetDisplayStyle();}}[Description("跳转按钮文字"), Category("自定义属性"), DefaultValue("跳转")]public string JumpText{get{return this._JumpText;}set{this._JumpText = value;this.btnToPageIndex.Text = this._JumpText;}}private int PageCount{get{return this._PageCount;}}[DefaultValue(1), Category("自定义属性"), Description("当前显示的页数")]public int PageIndex{get{return this._PageIndex;}set{this._PageIndex = value;}}[DefaultValue(10), Description("每页显示的记录数"), Category("自定义属性")]public int PageSize{get{return this._PageSize;}set{if (value <= 1){value = 10;}this._PageSize = value;this.SetLabelLocation();}}[Description("要分页的总记录数"), Category("自定义属性")]public int RecordCount{get{return this._RecordCount;}set{this._RecordCount = value;}}[DefaultValue(3), Description("图片和文字显示相对位置,当DisplayStyle=文字或DisplayStyle=图片及文字时生效"), Category("自定义属性")]public TextImageRalitionEnum TextImageRalitions{get{return this._TextImageRalition;}set{this._TextImageRalition = value;this.SetDisplayStyle();}}#endregionpublic WinFormPager(){InitializeComponent();}#region Methodsprotected int GetPageCount(int RecordCounts, int PageSizes){int num = 0;string str = (Convert.ToDouble(RecordCounts) / Convert.ToDouble(PageSizes)).ToString();if (str.IndexOf(".") < 0){return Convert.ToInt32(str);}string[] strArray = Regex.Split(str, @"\.", RegexOptions.IgnoreCase);if (!string.IsNullOrEmpty(strArray[1].ToString())){num = Convert.ToInt32(strArray[0]) + 1;}return num;}protected void SetBtnEnabled(){if (this._PageIndex == 1){this.btnFirst.Enabled = false;this.btnPrevious.Enabled = false;this.btnNext.Enabled =  true;this.btnLast.Enabled = true;//this.btnNext.Enabled = (this._PageCount <= 1) ? false : true;//this.btnLast.Enabled = (this._PageCount <= 1) ? false : true;}else if ((this._PageIndex > 1) && (this._PageIndex < this._PageCount)){this.btnFirst.Enabled = true;this.btnPrevious.Enabled = true;this.btnNext.Enabled = true;this.btnLast.Enabled = true;}else if (this._PageIndex == this._PageCount){this.btnFirst.Enabled = true;this.btnPrevious.Enabled = true;this.btnNext.Enabled = false;this.btnLast.Enabled = false;}}private void SetDisplayStyle(){TextImageRelation imageBeforeText = TextImageRelation.ImageBeforeText;if (this.TextImageRalitions == TextImageRalitionEnum.图片显示在文字上方){imageBeforeText = TextImageRelation.ImageAboveText;}else if (this.TextImageRalitions == TextImageRalitionEnum.图片显示在文字下方){imageBeforeText = TextImageRelation.TextAboveImage;}else if (this.TextImageRalitions == TextImageRalitionEnum.图片显示在文字前方){imageBeforeText = TextImageRelation.ImageBeforeText;}else if (this.TextImageRalitions == TextImageRalitionEnum.图片显示在文字后方){imageBeforeText = TextImageRelation.TextBeforeImage;}if (this.DisplayStyle == DisplayStyleEnum.图片){this.btnFirst.ImageList = this.btnPrevious.ImageList = this.btnNext.ImageList = this.btnLast.ImageList = this.imglstPager;this.btnFirst.ImageIndex = 0;this.btnPrevious.ImageIndex = 1;this.btnNext.ImageIndex = 2;this.btnLast.ImageIndex = 3;this.btnFirst.Text = this.btnPrevious.Text = this.btnNext.Text = this.btnLast.Text = "";this.btnFirst.TextImageRelation = this.btnPrevious.TextImageRelation = this.btnNext.TextImageRelation = this.btnLast.TextImageRelation = TextImageRelation.Overlay;}else if (this.DisplayStyle == DisplayStyleEnum.文字){this.btnFirst.ImageList = this.btnPrevious.ImageList = this.btnNext.ImageList = (ImageList)(this.btnLast.ImageList = null);this.btnFirst.Text = string.IsNullOrEmpty(this.BtnTextFirst) ? "首页" : this.BtnTextFirst;this.btnPrevious.Text = string.IsNullOrEmpty(this.BtnTextPrevious) ? "上页" : this.BtnTextPrevious;this.btnNext.Text = string.IsNullOrEmpty(this.BtnTextNext) ? "下页" : this.BtnTextNext;this.btnLast.Text = string.IsNullOrEmpty(this.BtnTextLast) ? "末页" : this.BtnTextLast;this.btnFirst.TextImageRelation = this.btnPrevious.TextImageRelation = this.btnNext.TextImageRelation = this.btnLast.TextImageRelation = TextImageRelation.Overlay;}else if (this.DisplayStyle == DisplayStyleEnum.图片及文字){this.btnFirst.ImageList = this.btnPrevious.ImageList = this.btnNext.ImageList = this.btnLast.ImageList = this.imglstPager;this.btnFirst.ImageIndex = 0;this.btnPrevious.ImageIndex = 1;this.btnNext.ImageIndex = 2;this.btnLast.ImageIndex = 3;this.btnFirst.Text = string.IsNullOrEmpty(this.BtnTextFirst) ? "首页" : this.BtnTextFirst;this.btnPrevious.Text = string.IsNullOrEmpty(this.BtnTextPrevious) ? "上页" : this.BtnTextPrevious;this.btnNext.Text = string.IsNullOrEmpty(this.BtnTextNext) ? "下页" : this.BtnTextNext;this.btnLast.Text = string.IsNullOrEmpty(this.BtnTextLast) ? "末页" : this.BtnTextLast;this.btnFirst.TextImageRelation = this.btnPrevious.TextImageRelation = this.btnNext.TextImageRelation = this.btnLast.TextImageRelation = imageBeforeText;}}protected void SetLabelLocation(){this.btnFirst.Left = (this.lblPager.Left + this.lblPager.Width) + 10;this.btnPrevious.Left = this.btnFirst.Left + this.btnFirst.Width;this.btnNext.Left = this.btnPrevious.Left + this.btnPrevious.Width;this.btnLast.Left = this.btnNext.Left + this.btnNext.Width;this.lbPre.Left = (this.btnLast.Left + this.btnLast.Width) + 10;this.txtToPageIndex.Left = this.lbPre.Left + this.lbPre.Width;this.lbEnd.Left = this.txtToPageIndex.Left + this.txtToPageIndex.Width;this.btnToPageIndex.Left = this.lbEnd.Left + this.lbEnd.Width;}private void SetPagerText(){string[] strArray = new string[] { this.RecordCount.ToString(), this.PageIndex.ToString(), this.PageCount.ToString(), this.PageSize.ToString() };this.lblPager.Text = string.Format(this.PagerText, (object[])strArray);}#endregion#region Eventsprivate void CustomEvent(object sender, EventArgs e){try{this.PageIndexChanged(sender, e);}catch (Exception){MessageBox.Show("未找到PageIndexChanged事件!");}}private void btnFirst_Click(object sender, EventArgs e){this._PageIndex = 1;this.SetPagerText();this.SetBtnEnabled();this.SetLabelLocation();this.CustomEvent(sender, e);}private void btnLast_Click(object sender, EventArgs e){this._PageIndex = this._PageCount;this.SetPagerText();this.SetBtnEnabled();this.SetLabelLocation();this.CustomEvent(sender, e);}private void btnNext_Click(object sender, EventArgs e){int num = this._PageIndex;try{int num2 = Convert.ToInt32(num) + 1;if (num2 >= this._RecordCount){num2 = this._RecordCount;}this._PageIndex = num2;this.SetPagerText();this.SetBtnEnabled();this.SetLabelLocation();this.CustomEvent(sender, e);}catch (Exception){}}private void btnPrevious_Click(object sender, EventArgs e){int num = this._PageIndex;try{int num2 = Convert.ToInt32(num) - 1;if (num2 <= 0){num2 = 1;}this._PageIndex = num2;this.SetPagerText();this.SetBtnEnabled();this.SetLabelLocation();this.CustomEvent(sender, e);}catch (Exception){}}private void btnToPageIndex_Click(object sender, EventArgs e){string text = this.txtToPageIndex.Text;int num = this._PageIndex;if (string.IsNullOrEmpty(text)){num = 1;this.txtToPageIndex.Text = "1";}else{num = Convert.ToInt32(text);if (num > this._PageCount){num = this._PageCount;this.txtToPageIndex.Text = this._PageCount.ToString();}else{this._PageIndex = num;this.SetPagerText();this.SetBtnEnabled();this.SetLabelLocation();this.CustomEvent(sender, e);}}}private void WinFormPager_Load(object sender, EventArgs e){this.SetBtnEnabled();this.btnToPageIndex.Text = this._JumpText;}private void WinFormPager_Paint(object sender, PaintEventArgs e){this._PageCount = this.GetPageCount(this._RecordCount, this._PageSize);this.SetPagerText();this.SetDisplayStyle();this.SetLabelLocation();}private void WinFormPager_MouseMove(object sender, MouseEventArgs e){foreach (Control control in base.Controls){if (control is Button){Button button = (Button)control;button.BackColor = Color.Transparent;button.FlatAppearance.BorderColor = Color.White;button.FlatAppearance.MouseDownBackColor = Color.Transparent;button.FlatAppearance.MouseOverBackColor = Color.Transparent;}}}#endregion#region AutoGeneratee#endregion}

引用控件Demo源码

  public partial class Form1 : Form{public Form1(){InitializeComponent();BindGridview(0);BindPager();}public void BindPager(){string sql = string.Format("select * from Test ");SqlCommand cmd = new SqlCommand(sql, DBhelper.conn());DBhelper.conn().Open();DataTable dt = new DataTable();SqlDataAdapter da = new SqlDataAdapter(sql, DBhelper.conn());da.Fill(dt);Pager1.PageSize = 5;Pager1.RecordCount = dt.Rows.Count;Pager1.PageIndex = 1;Pager1.Show();}public void BindGridview(int pageindex){string sql = string.Format("select top 5* from  where LogID not in (select top (@pageindex*5)LogID from SysOperationLog)");SqlParameter[] sqlpa = {new SqlParameter("@pageindex",pageindex),};SqlCommand cmd = new SqlCommand(sql, DBhelper.conn());DBhelper.conn().Open();DataTable dt = new DataTable();SqlDataAdapter da = new SqlDataAdapter(sql, DBhelper.conn());if (sqlpa != null){da.SelectCommand.Parameters.AddRange(sqlpa);}da.Fill(dt);dataGridView1.DataSource = dt;}private void Pager1_PageIndexChanged(object sender, EventArgs e){BindGridview(Pager1.PageIndex-1);}}

WinForm自定义分页控件实现Datagridview分页效果附引用Demo相关推荐

  1. MVC3学习第十三章 佟掌柜第二弹——MVC3下利用陕北吴旗娃的分页控件实现数据分页...

    本章学习内容 1.了解陕北吴旗娃的Mvc分页控件 2.利用分页控件实现MVC3下的商品分页 3.利用分页控件实现MVC3下一个页面多个分页以及ajax分页效果 1.了解陕北吴旗娃的Mvc分页控件 在w ...

  2. Winform分页控件之纯分页显示处理

    在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情 ...

  3. asp.net分页控件使用详解【附实例下载】

    本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将 ...

  4. 【开源】我的分页控件正式命名为QuickPager ASP.NET2.0分页控件

    分页控件正式命名为 QuickPager ASP.NET2.0分页控件 . 版本号:2.0.0.1 Framework:.net2.0 分页方式:PostBack .URL (暂时没有实现URL的分页 ...

  5. winform自定义分页控件

    1.控件代码: public partial class PagerControl : UserControl {#region 构造函数public PagerControl() {Initiali ...

  6. [置顶] 分步实现具有分页功能的自定义DataList控件【附源代码】

    一.控件也是类 [效果] [操作步骤] 1.  新建网站Web 2.  添加类CustomDataList.cs(系统会提示你把类建在App_Code文件夹中),代码如下: using System; ...

  7. 猛犸Winform分页控件

    本Winform分页控件不于具体的数据源相关联,可随时设置每页显示记录行数和页码,简单实用,如下图 下载地址:http://download.csdn.net/detail/shunlu/808974 ...

  8. C#自定义用户控件之分页

    形形色色的分页控件很多,有些可满足我们的要求,但有些却不一定,下面是我在工作当中遇到的问题而随手写了个能满足某些功能的自定义分页控件: 控件源代码: <%@ Control Language=& ...

  9. 也发一个自定义分页控件

    分页控件有页面选择10 20 50显示,跳转到第几页,上页,下页功能.如图 代码为: using System; using System.Web.UI; using System.Web.UI.We ...

  10. .net 服务器端自定义分页控件 简单示例

    使用效果如图: 先将控件添加到工具箱 将控件拖入到页面 会自动生成如下代码 <pager:pager ID="Pager1" runat="server" ...

最新文章

  1. python中编完类后到实例编写_[零基础学python]编写类之一创建实例
  2. 真实HDFS集群启动后master的jps没有DataNode
  3. python模块介绍- xlwt 创建xls文件(excel)
  4. NAR再版 | 人类长非编码RNA知识库LncRNAWiki 2.0
  5. KODExplorer可道云-资源管理器(芒果云)
  6. PCL综述—三维图像处理
  7. android 平板横版布局,引领构建安卓平板横屏生态 华为MatePad Pro凭什么?
  8. 微信分享网页链接缩略图不显示解决方法
  9. 关于我在黑马程序员培训毕业后的亲身体验
  10. el-input设置type为number时,切换为中文输入法输入会让光标上移的问题解决
  11. android studio mipmap下创建不同分辨率的文件夹
  12. Android图片分享问题采坑总结
  13. Android Text文字详解
  14. vs X64汇编 LNK2001: unresolved external symbol mainCRTStartup
  15. 热门的智慧养老产品有哪些?解读新政策后的超全资料整合
  16. qt android png透明,Qt处理照片实现白色背景转透明
  17. 树莓派4B+Ubuntu 18.04 LTS + 桌面desktop + ros安装@树莓派4B、Ubuntu、desktop、ros
  18. C# 鼠标跟随放大镜
  19. 金蝶容器Apusic中重新部署war包
  20. Beten Ex作为区块链革命的全球领先者,为数字货币价值流通而努力

热门文章

  1. 徒步运动软件怎么申请测试,徒步,不仅是体质健康的锻炼和检测,还是心理健康成长的过程...
  2. jsencrypt 公私钥解加密
  3. java用ffmpeg获取音频信息及转化音频采样率、比特率、声道数量、格式
  4. Win7电脑如何关闭智能卡服务功能--win10专业版
  5. FXCG: 日内交易与波段交易有什么区别
  6. 远程主机强迫关闭了一个现有的连接
  7. lsof恢复被rm -rf命令删除的文件
  8. 安卓txt极简记事本文件保存内部存储无广告
  9. 鼠标光标变成方块怎么办
  10. 零基础学习scala_从0-60开始学习Scala:基础知识