其实功能实现很简单。我做的是一个通用的分页控件。项目时间很紧,可能有点粗糙。欢迎大家斧正。不说了直接贴代码吧。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Common;
using System.Collections; namespace Common
{
public partial class WinFormPager : UserControl
{
public event EventHandler PageChanged; //事件:控件的当前页码发生变更。
private int pageSize;
private int curPage;
private int pageCount;
public WinFormPager()
{
InitializeComponent();
} private void WinFormPager_Load(object sender, EventArgs e)
{
}
/// <summary>
/// [属性]每页显示记录数。
/// </summary>
public int PageSize
{
get
{
if (pageSize <= )
{
pageSize = ;
}
return pageSize;
}
set
{
pageSize = value;
}
} /// <summary>
/// 当前页数
/// </summary>
public int CurPage
{
get
{
if (curPage <= )
{
curPage = ;
}
return curPage;
}
set
{
curPage = value;
if (PageChanged != null)
{
SafeRaise.Raise(PageChanged,null);//触发当件页码变更事件。
}
}
}
/// <summary>
/// [属性]总页数。
/// </summary>
public int PageCount
{
get
{
if (RecordCount > )
{
int pageCount = RecordCount / PageSize;
if (RecordCount % PageSize == )
{
pageCount = RecordCount / PageSize;
} else
{
pageCount = RecordCount / PageSize + ;
}
return pageCount;
}
else
{
return ;
}
}
set
{
pageCount = value;
}
} /// <summary>
/// [属性]总记录数。
/// </summary>
public int RecordCount
{
get;
set;
} /// <summary>
/// [属性]相对于当前页的上一页
/// </summary>
public int PrevPage
{
get
{
if (CurPage > )
{
return CurPage - ;
}
return ;
}
} /// <summary>
/// [属性]相对于当前页的下一页
/// </summary>
public int NextPage
{
get
{
if (CurPage < PageCount)
{
return CurPage + ;
}
return PageCount;
}
} private void btnFirstPage_Click(object sender, EventArgs e)
{
this.CurPage = ;
} private void btnLastPage_Click(object sender, EventArgs e)
{
this.CurPage = this.PrevPage;
} private void btnNextPage_Click(object sender, EventArgs e)
{
this.CurPage = this.NextPage;
} private void btnEndPage_Click(object sender, EventArgs e)
{
this.CurPage = this.PageCount;
} private void txtPageNumber_TextChanged(object sender, EventArgs e)
{
if (!Validator.IsNumeric(this.txtPageNumber.Text.Trim()))
{
MessageBox.Show("请输入数字!");
}
} private void btnJump_Click(object sender, EventArgs e)
{

if (!Validator.IsNumeric(this.txtPageNumber.Text.Trim()))//验证输入是否为数字
{
MessageBox.Show("请输入数字!");
}
else
{
if (int.Parse(this.txtPageNumber.Text.Trim()) > )
{
if (int.Parse(this.txtPageNumber.Text.Trim()) < this.PageCount)
{
this.CurPage = int.Parse(this.txtPageNumber.Text.Trim());
}
else
{
this.CurPage = this.PageCount;
}
}
else
{
this.CurPage = ;
}
}
}
}
}

该用户自定义控件在页面中取名pager

private void BindData()
{
int rowCount = ;
pager.PageSize = ;
    DataGridView.DataSource = GetList(pager.CurPage, pager.PageSize, out rowCount);
pager.RecordCount = rowCount;
pager.lbNumber.Text = string.Format("共{0}条记录,每页{1}条记录,共{2}页", pager.RecordCount.ToString(), pager.PageSize.ToString(), pager.PageCount.ToString());
} private void Pager_PageChanged(object sender, EventArgs e)
{
BindData(); //重新对DataGridView控件的数据源进行绑定。
}

控件

Windows Form 分页。的更多相关文章

  1. 如何用Web技术开发Windows Form应用

    现在H5很热,很多互联网公司的产品都采用混合编程,其中各个平台客户端的“壳”为原生控件,但是内容很多都是Web网页,因此可以做出很多炫酷的效果.随着Node.js和Ionic等框架的出现,现在感觉Ja ...

  2. Windows Form 中快捷键设置

    在Windows Form程序中使用带下划线的快捷键只需要进行设置: 就能够工作.

  3. VS2008 Windows Form项目安装包生成详解

    2008 Windows Form项目的发布对有经验的程序员来说,可能不值一提,但对很多新手来说却不知道如何操作,因为在很多关于Visual Studio的书籍中也没有相关介绍,权威如<C# 2 ...

  4. VISUAL STUDIO 2008 WINDOWS FORM项目发布生成安装包详解(转)

    转自:http://www.cnblogs.com/killerofyang/archive/2012/05/31/2529193.html Visual Studio 2008 Windows Fo ...

  5. C# Adding Hyperlink to Windows Form z

    When creating a Windows form in C#, we would like to create a hyperlink so that when the user click ...

  6. windows form (窗体) 之间传值小结

    windows form (窗体) 之间传值小结   windows form (窗体) 之间传值小结 在windows form之间传值,我总结了有四个方法:全局变量.属性.窗体构造函数和deleg ...

  7. Ninject之旅之十二:Ninject在Windows Form程序上的应用(附程序下载)

    摘要: 下面的几篇文章介绍如何使用Ninject创建不同类型的应用系统.包括: Windows Form应用系统 ASP.NET MVC应用系统 ASP.NET Web Form应用系统 尽管对于不同 ...

  8. Windows Form线程同步

    .Net多线程开发中,经常需要启动工作线程Worker thread处理某些事情,而工作线程中又需要更新主线程UI thread的界面状态.我们只能在主线程中操作界面控件,否则.Net会抛出异常. 那 ...

  9. C#通讯录——Windows Form Contact List

    C#通讯录 Windows Form Contact List 主窗口 using System; using System.Collections.Generic; using System.Com ...

随机推荐

  1. Dijkstra最短路径算法

    #include <iostream> #include <vector> #include <cstring> #include <cstdio> # ...

  2. PHP计算中英混输字符串长度

    最近做项目中碰到需要post value length check的这么一个情况 有这么一个需求, 需要backend来处理post过来的中英混输的数据. 对其限制的规则是中文10个字符, 英文20个 ...

  3. 【转载】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及 ...

  4. 在sql-server上建立mysql链接库

    EXEC sp_addlinkedserver @server = N'RESUME_MYSQL_CONN', @srvproduct=N'MySQL ODBC 5.1 Driver', @provi ...

  5. shell 脚本执行,出现错误bad interpreter: No such file or directory

    出现bad interpreter:No such file or directory的原因是文件格式的问题.这个文件是在Windows下编写的.换行的方式与Unix不一样,但是在VI下面如果不Set ...

  6. UI4_UITableViewEdit

    // // AppDelegate.m // UI4_UITableViewEdit // // Created by zhangxueming on 15/7/13. // Copyright (c ...

  7. ApplicationContext容器的设计原理

    1.在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理. 2.在 ...

  8. 安装PHP软件

    安装PHP软件 ① tar -zxvf php-5.2.5.tar.gz ② cd php-5.2.5 ③ 使用configure配置安装信息(最重要) ./configure \ --prefix= ...

  9. C#打开mdb文件,获取文件下的所有表格,以及获取表格下的所有字段

    String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|aspxWeb2 ...

  10. Codevs 1014 装箱问题

    题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...