zoukankan      html  css  js  c++  java
  • 【NET】Winform分页控件初探

      1 public partial class WinFormPager : UserControl
      2     {
      3         const int PAGE_INDEX_START = 1;
      4         /// <summary>
      5         /// 当前页 
      6         /// </summary>
      7         public int CurrentPage
      8         {
      9             get;
     10             set;
     11         }
     12         /// <summary>
     13         /// 每页显示条数
     14         /// </summary>
     15         [Description("每页显示条数"), Category("分页设置"), DefaultValue(10)]
     16         public int PageSize
     17         {
     18             get;
     19             set;
     20         }
     21         /// <summary>
     22         /// 总共多少页 
     23         /// </summary>
     24         public int PageTotal
     25         {
     26             get;
     27             set;
     28         }
     29         int recordCount;
     30         public int RecordCount
     31         {
     32             get {
     33                 return recordCount;
     34             }
     35             set {
     36                 recordCount = value;
     37                 SetBtnPrePageAndBtnNextPage();
     38             }
     39         }
     40 
     41         private Label lbMsg;
     42         private LinkLabel llFirst;
     43         private LinkLabel llPrev;
     44         private LinkLabel llNext;
     45         private LinkLabel llLast;//按钮间距离
     46 
     47         public delegate void PageChangeDelegate();
     48         /// <summary>
     49         /// 当前页改变时发生的事件
     50         /// </summary>
     51         [Description("当前页改变时发生的事件"), Category("分页设置")]
     52         public event PageChangeDelegate PageChanged;
     53         public WinFormPager()
     54         {
     55             InitializeComponent();
     56         }
     57         
     58         /// <summary>
     59         /// 设置上一页、下一页是否可用以及当前页按钮字体颜色
     60         /// </summary>
     61         public void SetBtnPrePageAndBtnNextPage()
     62         {
     63             
     64             if (recordCount == 0)
     65             {
     66                 llFirst.Enabled = llPrev.Enabled = llNext.Enabled = llLast.Enabled = false;
     67             }
     68             else
     69             {
     70                 PageTotal = Convert.ToInt32(Math.Ceiling(RecordCount * 1.0 / PageSize));//总共多少页  
     71                 if (CurrentPage == PAGE_INDEX_START)
     72                 {
     73                     llFirst.Enabled = llPrev.Enabled = false;
     74                 }
     75                 else
     76                 {
     77                     llFirst.Enabled = llPrev.Enabled = true;
     78                 }
     79 
     80                 if (CurrentPage == PageTotal)
     81                 {
     82                     llNext.Enabled = llLast.Enabled = false;
     83                 }
     84                 else
     85                 {
     86                     llNext.Enabled = llLast.Enabled = true;
     87                 }
     88             }
     89             this.lbMsg.Text = string.Format(this.lbMsg.Tag.ToString(), RecordCount, PageSize, CurrentPage, PageTotal);
     90         }
     91 
     92 
     93         private void InitializeComponent()
     94         {
     95             this.lbMsg = new System.Windows.Forms.Label();
     96             this.llFirst = new System.Windows.Forms.LinkLabel();
     97             this.llPrev = new System.Windows.Forms.LinkLabel();
     98             this.llNext = new System.Windows.Forms.LinkLabel();
     99             this.llLast = new System.Windows.Forms.LinkLabel();
    100             this.SuspendLayout();
    101             // 
    102             // lbMsg
    103             // 
    104             this.lbMsg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    105             this.lbMsg.AutoSize = true;
    106             this.lbMsg.Location = new System.Drawing.Point(12, 9);
    107             this.lbMsg.Name = "lbMsg";
    108             this.lbMsg.Size = new System.Drawing.Size(215, 19);
    109             this.lbMsg.TabIndex = 0;
    110             this.lbMsg.Tag = "共{0}条 {1}条/页 当前第{2}页/{3}页";
    111             this.lbMsg.Text = "共{0}条 {1}条/页 当前第{2}页/{3}页";
    112             this.lbMsg.UseCompatibleTextRendering = true;
    113             // 
    114             // llFirst
    115             // 
    116             this.llFirst.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    117             this.llFirst.AutoSize = true;
    118             this.llFirst.Location = new System.Drawing.Point(279, 9);
    119             this.llFirst.Name = "llFirst";
    120             this.llFirst.Size = new System.Drawing.Size(29, 12);
    121             this.llFirst.TabIndex = 1;
    122             this.llFirst.TabStop = true;
    123             this.llFirst.Text = "首页";
    124             this.llFirst.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llFirst_LinkClicked);
    125             // 
    126             // llPrev
    127             // 
    128             this.llPrev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    129             this.llPrev.AutoSize = true;
    130             this.llPrev.Location = new System.Drawing.Point(314, 9);
    131             this.llPrev.Name = "llPrev";
    132             this.llPrev.Size = new System.Drawing.Size(41, 12);
    133             this.llPrev.TabIndex = 2;
    134             this.llPrev.TabStop = true;
    135             this.llPrev.Text = "上一页";
    136             this.llPrev.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llPrev_LinkClicked);
    137             // 
    138             // llNext
    139             // 
    140             this.llNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    141             this.llNext.AutoSize = true;
    142             this.llNext.Location = new System.Drawing.Point(361, 9);
    143             this.llNext.Name = "llNext";
    144             this.llNext.Size = new System.Drawing.Size(41, 12);
    145             this.llNext.TabIndex = 3;
    146             this.llNext.TabStop = true;
    147             this.llNext.Text = "下一页";
    148             this.llNext.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llNext_LinkClicked);
    149             // 
    150             // llLast
    151             // 
    152             this.llLast.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    153             this.llLast.AutoSize = true;
    154             this.llLast.Location = new System.Drawing.Point(408, 9);
    155             this.llLast.Name = "llLast";
    156             this.llLast.Size = new System.Drawing.Size(29, 12);
    157             this.llLast.TabIndex = 4;
    158             this.llLast.TabStop = true;
    159             this.llLast.Text = "末页";
    160             this.llLast.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llLast_LinkClicked);
    161             // 
    162             // WinFormPager
    163             // 
    164             this.Controls.Add(this.llLast);
    165             this.Controls.Add(this.llNext);
    166             this.Controls.Add(this.llPrev);
    167             this.Controls.Add(this.llFirst);
    168             this.Controls.Add(this.lbMsg);
    169             this.Name = "WinFormPager";
    170             this.Size = new System.Drawing.Size(468, 30);
    171             this.ResumeLayout(false);
    172             this.PerformLayout();
    173 
    174         }
    175 
    176         private void llFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    177         {
    178             PageAction(PAGE_INDEX_START);
    179             SetBtnPrePageAndBtnNextPage();
    180         }
    181 
    182         public void PageAction(int pageNumOperation) {
    183             CurrentPage = pageNumOperation;
    184             if (CurrentPage < PAGE_INDEX_START)
    185             {
    186                 CurrentPage = PAGE_INDEX_START;
    187             }
    188             if (CurrentPage > PageTotal) {
    189                 CurrentPage = PageTotal;
    190             }
    191             
    192             if (PageChanged != null)
    193             {
    194                 PageChanged();
    195             }
    196         }
    197 
    198         private void llLast_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    199         {
    200             PageAction(PageTotal);
    201         }
    202 
    203         private void llPrev_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    204         {
    205             PageAction(CurrentPage-1);
    206         }
    207 
    208         private void llNext_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    209         {
    210             PageAction(CurrentPage + 1);
    211         }
    212 
    213     }

    调用

    public ListViewExtendPager()
            {//分页List 控件(此控件包含分页控件)构造函数
                InitializeComponent();
                this.wfpPager.PageSize = 15;
                this.wfpPager.PageChanged += new WinFormPager.PageChangeDelegate(
                    () =>
                    {
                        DataBind();
                    }
                );
            }
            public Action<ListViewExtendPager> dataBindAction;
            private void ListViewExtendPager_Load(object sender, EventArgs e)
            {
                this.wfpPager.CurrentPage = 1;
                DataBind();
            }
    
            private void DataBind() {
                if (dataBindAction != null) {
                    dataBindAction(this);
                }
            }
  • 相关阅读:
    能打开电脑都看懂的系列之Windows下修改MongoDB用户密码
    vue element el-input 输入框当内容长度超出时显示el-tooltip提示
    vue 数据代理帮助类 ux-data-proxy
    微信小程序全局设置分享内容
    解决vscode更新后Ext Js插件无法使用问题
    ux.form.field.Year 只能选年的时间扩展
    ux.form.field.Month 只能选年、月的时间扩展
    Ext Js 6+ 动态切换皮肤
    Ext Js 6.2.1 classic grid 滚动条bug解决方案
    Ext-JS-Modern-Demo 面向移动端示例
  • 原文地址:https://www.cnblogs.com/yomho/p/3216509.html
Copyright © 2011-2022 走看看