【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 ...
随机推荐
- 雅居乐在核心产品 "决策"
2015.6.2 在武汉-- 这是一支谦卑且认真学习,又实实在在做产品的 "产品级敏捷团队". "产品级敏捷团队"--在产品版本号开发的生命周期中.均能共同高效 ...
- C#-TextBox-登录表单password无形---ShinePans
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Ubuntu14.04安装一个小问题,搜狗输入法
罕见的搜狗输入法支持ubuntu.尝试了决定性下载. 官方网站:http://pinyin.sogou.com/linux/ 官网教程:http://pinyin.sogou.com/linux/he ...
- PLSQL_监控有些SQL的执行次数和频率
原文:PLSQL_监控有些SQL的执行次数和频率 2014-12-25 Created By 鲍新建
- MySQL 升级方法指南大全
原文:MySQL 升级方法指南大全 通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本.例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MyS ...
- 3D人脸识别预处理,3D face recognition preprocess
本文由兔崩溃公布http://blog.csdn.net/smartempire/article/details/31373817. 转载请注明出处.howdeshui#163.com 近期在做三维人 ...
- MYSQL LIKE 区分大小写匹配
原文 MYSQL LIKE 区分大小写匹配 MYSQL使用LIKE匹配时默认是不区分大小写的.例:select * from table_name where a like 'wss%'select ...
- PhotoShop CC安装抠图插件KnockOut 2
1.KnockOut 2只有32位版本,因此需要给32位的PhotoShop CC安装. 2.下载地址:http://www.cr173.com/soft/28207.html 3.安装KnockOu ...
- OpenSUSE 13.2使用VPN(PPTP)
新年开始,有时查询个资料或是下个软件包并不是那么愉快,决定使用付费VPN,他们使用的是用户名及密码的验证方式 在网上找到了一个教程,挺详尽的,如果想按照步骤能使用即可的原则,跟着我一起设置,想了解更多 ...
- Spring IOC 之Bean定义的继承
一个Bean的定义可以包含大量的配置信息,包括构造器参数.属性值以及容器规范信息,比如初始化方法.静态工厂方法名字等等.一子bean的定义可以从父bean的定义中继承配置数据信息.子bean定义可以覆 ...