【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 ...
随机推荐
- mysql_navicat-permium 在Mac下破解方法
首先下载符合当前系统支持的navicat-permium版本,我自己下载的是11.0.16 然后我们开始破解旅程,先要安装上navicat-permium,记住千万不要打开(如果你打开了不好意思,卸了 ...
- SVN有用教程
好用的Windows下SVNclient——Tortoise SVN的下载地址: http://tortoisesvn.tigris.org/ 文档: http://www.subversion.or ...
- sdut 3-4 长方形的周长和面积计算
3-4 长方形的周长和面积计算 Time Limit: 1000MS Memory limit: 65536K 标题叙述性说明 通过本题的练习能够掌握拷贝构造函数的定义和用法: 设计一个长方形类Rec ...
- Java对象比较器对泛型List进行排序-Demo
针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以 ...
- 大约xib连接错误bug正确
今天code什么时候,发现xib除了加载问题,研究发现的一个问题 在连接的时候, object一定要选择,您连接view,代替 File's Owner 版权声明:本文博客原创文章,博客,未经同意,不 ...
- CodeSmith 生成代码
使用CodeSmith 生成代码 CodeSmith是一款优秀的代码生成工具.在ORM中,它能帮助我们生成实体类.XML配置文件,从而简化了我们一部分的开发工作.下面简要说说它的基本用法. 1. 打 ...
- 使用c#给outlook添加任务、发送邮件
原文:使用c#给outlook添加任务.发送邮件 c#在使用outlook提供的一些API时,需要将outlook相关的com引用到项目中. 具体方法就是用vs打开工程后,在工程上添加引用,在com选 ...
- ACM-简单的主题Factorial——poj1401
明出处:http://blog.csdn.net/lttree Factorial Time Limit: 1500MS Memory Limit: 65536K Total Submission ...
- 在ubuntu下把php的网页调试功能打开
我这儿的环境是 Ubuntu 14.04 + Lighttpd + PHP5.5 默认情况下php的网页调试功能是不打开的,当PHP解析到一个错误的语法时会直接输出为空白. 我在网上找一许多文章,说 ...
- vector成员函数解析
vector线性集装箱,其元素颜格排序根据线性序列,和动态数组很阶段似,像阵列,它的元素被存储在连续的存储空间,这也意味着,我们不仅能够使用迭代器(iterator)访问元素,也可以用一个指针访问偏移 ...