【NET】Winform分页控件初探
public partial class WinFormPager : UserControl
{
const int PAGE_INDEX_START = ;
/// <summary>
/// 当前页
/// </summary>
public int CurrentPage
{
get;
set;
}
/// <summary>
/// 每页显示条数
/// </summary>
[Description("每页显示条数"), Category("分页设置"), DefaultValue()]
public int PageSize
{
get;
set;
}
/// <summary>
/// 总共多少页
/// </summary>
public int PageTotal
{
get;
set;
}
int recordCount;
public int RecordCount
{
get {
return recordCount;
}
set {
recordCount = value;
SetBtnPrePageAndBtnNextPage();
}
} private Label lbMsg;
private LinkLabel llFirst;
private LinkLabel llPrev;
private LinkLabel llNext;
private LinkLabel llLast;//按钮间距离 public delegate void PageChangeDelegate();
/// <summary>
/// 当前页改变时发生的事件
/// </summary>
[Description("当前页改变时发生的事件"), Category("分页设置")]
public event PageChangeDelegate PageChanged;
public WinFormPager()
{
InitializeComponent();
} /// <summary>
/// 设置上一页、下一页是否可用以及当前页按钮字体颜色
/// </summary>
public void SetBtnPrePageAndBtnNextPage()
{ if (recordCount == )
{
llFirst.Enabled = llPrev.Enabled = llNext.Enabled = llLast.Enabled = false;
}
else
{
PageTotal = Convert.ToInt32(Math.Ceiling(RecordCount * 1.0 / PageSize));//总共多少页
if (CurrentPage == PAGE_INDEX_START)
{
llFirst.Enabled = llPrev.Enabled = false;
}
else
{
llFirst.Enabled = llPrev.Enabled = true;
} if (CurrentPage == PageTotal)
{
llNext.Enabled = llLast.Enabled = false;
}
else
{
llNext.Enabled = llLast.Enabled = true;
}
}
this.lbMsg.Text = string.Format(this.lbMsg.Tag.ToString(), RecordCount, PageSize, CurrentPage, PageTotal);
} private void InitializeComponent()
{
this.lbMsg = new System.Windows.Forms.Label();
this.llFirst = new System.Windows.Forms.LinkLabel();
this.llPrev = new System.Windows.Forms.LinkLabel();
this.llNext = new System.Windows.Forms.LinkLabel();
this.llLast = new System.Windows.Forms.LinkLabel();
this.SuspendLayout();
//
// lbMsg
//
this.lbMsg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lbMsg.AutoSize = true;
this.lbMsg.Location = new System.Drawing.Point(, );
this.lbMsg.Name = "lbMsg";
this.lbMsg.Size = new System.Drawing.Size(, );
this.lbMsg.TabIndex = ;
this.lbMsg.Tag = "共{0}条 {1}条/页 当前第{2}页/{3}页";
this.lbMsg.Text = "共{0}条 {1}条/页 当前第{2}页/{3}页";
this.lbMsg.UseCompatibleTextRendering = true;
//
// llFirst
//
this.llFirst.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.llFirst.AutoSize = true;
this.llFirst.Location = new System.Drawing.Point(, );
this.llFirst.Name = "llFirst";
this.llFirst.Size = new System.Drawing.Size(, );
this.llFirst.TabIndex = ;
this.llFirst.TabStop = true;
this.llFirst.Text = "首页";
this.llFirst.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llFirst_LinkClicked);
//
// llPrev
//
this.llPrev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.llPrev.AutoSize = true;
this.llPrev.Location = new System.Drawing.Point(, );
this.llPrev.Name = "llPrev";
this.llPrev.Size = new System.Drawing.Size(, );
this.llPrev.TabIndex = ;
this.llPrev.TabStop = true;
this.llPrev.Text = "上一页";
this.llPrev.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llPrev_LinkClicked);
//
// llNext
//
this.llNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.llNext.AutoSize = true;
this.llNext.Location = new System.Drawing.Point(, );
this.llNext.Name = "llNext";
this.llNext.Size = new System.Drawing.Size(, );
this.llNext.TabIndex = ;
this.llNext.TabStop = true;
this.llNext.Text = "下一页";
this.llNext.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llNext_LinkClicked);
//
// llLast
//
this.llLast.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.llLast.AutoSize = true;
this.llLast.Location = new System.Drawing.Point(, );
this.llLast.Name = "llLast";
this.llLast.Size = new System.Drawing.Size(, );
this.llLast.TabIndex = ;
this.llLast.TabStop = true;
this.llLast.Text = "末页";
this.llLast.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llLast_LinkClicked);
//
// WinFormPager
//
this.Controls.Add(this.llLast);
this.Controls.Add(this.llNext);
this.Controls.Add(this.llPrev);
this.Controls.Add(this.llFirst);
this.Controls.Add(this.lbMsg);
this.Name = "WinFormPager";
this.Size = new System.Drawing.Size(, );
this.ResumeLayout(false);
this.PerformLayout(); } private void llFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
PageAction(PAGE_INDEX_START);
SetBtnPrePageAndBtnNextPage();
} public void PageAction(int pageNumOperation) {
CurrentPage = pageNumOperation;
if (CurrentPage < PAGE_INDEX_START)
{
CurrentPage = PAGE_INDEX_START;
}
if (CurrentPage > PageTotal) {
CurrentPage = PageTotal;
} if (PageChanged != null)
{
PageChanged();
}
} private void llLast_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
PageAction(PageTotal);
} private void llPrev_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
PageAction(CurrentPage-);
} private void llNext_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
PageAction(CurrentPage + );
} }
调用
public ListViewExtendPager()
{//分页List 控件(此控件包含分页控件)构造函数
InitializeComponent();
this.wfpPager.PageSize = ;
this.wfpPager.PageChanged += new WinFormPager.PageChangeDelegate(
() =>
{
DataBind();
}
);
}
public Action<ListViewExtendPager> dataBindAction;
private void ListViewExtendPager_Load(object sender, EventArgs e)
{
this.wfpPager.CurrentPage = ;
DataBind();
} private void DataBind() {
if (dataBindAction != null) {
dataBindAction(this);
}
}
【NET】Winform分页控件初探的更多相关文章
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- winform 分页控件
http://www.cnblogs.com/liuyunsheng/p/4853387.html http://www.cnblogs.com/wuhuacong/archive/2011/07/0 ...
- 开发框架模块视频系列(2)-Winform分页控件介绍
在软件开发过程中,为了节省开发时间,提高开发效率,统一用户处理界面,尽可能使用成熟.功能强大的分页控件,这款Winform环境下的分页控件,集成了数据分页.内容提示.数据打印.数据导出.表头中文转义等 ...
- 类似web风格的 Winform 分页控件
背景 最近做一个Winform的小程序,需要用到分页,由于之前一直在用 TonyPagerForWinForm.dll ,但该库没有源代码,网上找的也不全面,索性就准备自己改造一个.在园子里翻了一下, ...
- [原创]WinForm分页控件制作
先简单说一下思路: 1.做一个分页控件的导航类,即记录总页数.当前页.每页记录数,下一页.上一页.跳转等操作的页数变更. class PageNavigation{/// <summary> ...
- OCUI界面设计:滚动视图与分页控件初探
滚动视图(UIScrollView) 简单介绍 1.UIScrollView滚动视图能够排列并显示超出自身显示范围的内容. 2.UIScrollView内部整合了多种手势来达到丰富的界面展示效果. 3 ...
- Winform分页控件
设计界面: 控件代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- 如何Windows分页控件中增加统计功能
在我的博客里面,很多Winform程序里面都用到了分页处理,这样可以不管是在直接访问数据库的场景还是使用网络方式访问WCF服务获取数据,都能获得较好的效率,因此WInform程序里面的分页控件的使用是 ...
- winform基础控件总结
转自:http://www.cnblogs.com/top5/archive/2010/04/29/1724039.html 基础 - 常用控件 C# WinForm开发系列 - CheckBox/B ...
随机推荐
- 浅谈JavaScript中继承的实现
谈到js中的面向对象编程,都有一个共同点,选择原型属性还是构造函数,两者各有利弊,而就片面的从js的对象创建以及继承的实现两个方面来说,官方所推荐的是两个相结合,各尽其责,各取其长,在前面的例子中,我 ...
- Java Web整合开发(12) -- JDBC
JDBC访问数据库的一般步骤: 注册驱动,获取连接,获取Statement,执行SQL并返回结果集,遍历结果集显示数据,释放连接. Connection conn = null; Statement ...
- java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件
用mybatis原因很简单,易用,性能.是介于jdbc和hibernate之间的一个完美方案. 很简单: 1:配置pom <project xmlns="http://maven.ap ...
- Apache & WebDav 配置(一)
(一)简单Apache服务器的搭建!用于文件de上传.下载.修改.删除! ---------- - Apache 1. 使用最广的 Web 服务器.支持各种脚本(PHP)的执行 2. Mac自带,只需 ...
- MongoDB学习笔记<四>
今天继续学习MongoDB的相关知识,主要包含例如以下: --find具体解释 --分页与排序 --游标和其它知识 1.指定返回的键 db.person.find({},{"_id" ...
- 只显示年月的js时间控件 纯手写
<style> #date { text-align: center; } .td { cursor: pointer; } </style> <script> f ...
- MySql绿色版配置及使用详解
原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...
- JS判断Array数组中是否包含指定元素
1.调用方式: var arr=["a","b"]; alert(arr.in_array("a")) 2.JS判断数组是否包含指定元素方法 ...
- session什么时候被创建
一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用HttpServletRequest.getSession(true) ...
- 苹果iOS苹果公司的手机用户都有权索赔
大家知道.手机中的操作系统(基础软件)存储在手机固(firm,ware)之中,一般而言,手机用户自己是不能修改的. 苹果iOS手机的系统后门(服务程序)也存储在手机固件之中.手机用户自己是无法删除的. ...