C# 自定义分页控件,其中用到了DevComponents.DotNetBar控件,只是为了界面美观!
.CS文件源码
/// <summary>
/// 自定义分页控件
/// </summary>
public partial class PaperControl : UserControl
{
#region 参数
private int displayCount;//总信息条数
private int perPage; //每页显示的信息条数
private int pageCount;//分页总数
private int currentPage;//当前页
private int maxPerPage;
#endregion
#region 事件
public event EventHandler currentPageChange;//自定义事件
#endregion
#region 属性
/// <summary>
/// 总信息条数
/// </summary>
public int DisplayCount
{
set { displayCount = value; }
get { return displayCount; }
}
/// <summary>
/// 每页显示条数
/// </summary>
public int PerPage
{
get { return perPage; }
}
/// <summary>
/// 分页总数
/// </summary>
public int PageCount
{
get { return pageCount; }
}
/// <summary>
/// 当前页码
/// </summary>
public int CurrentPage
{
get { return currentPage; }
}
#endregion
#region 构造函数
public PaperControl()
{
InitializeComponent();
displayCount = 0;
perPage = 50;
pageCount = 1;
currentPage = 1;
maxPerPage = 10000;
}
#endregion
/// <summary>
/// 页面初始化
/// </summary>
/// <param name="count">信息总条数</param>
/// <param name="perpage">每页显示条数</param>
public void Init(int count, int perpage)
{
#region
if (!string.IsNullOrEmpty(this.txtperpage.Text))
{
try
{
this.perPage = Convert.ToInt32(this.txtperpage.Text);
}
catch
{
MessageBox.Show("请填写数字!", "提示");
return;
}
if (Convert.ToInt32(this.txtperpage.Text) > maxPerPage)
{
this.txtperpage.Text = maxPerPage.ToString();
this.perPage = maxPerPage;
MessageBox.Show("最大只能是" + maxPerPage, "提示");
}
}
displayCount = Math.Max(count, 1);
perPage = Math.Min(this.perPage, displayCount);
pageCount = displayCount / perPage;
if (displayCount % perPage != 0)
{
pageCount++;
}
currentPage = 1;
DrawControl();
#endregion
}
private void DrawControl()
{
this.lblPageNum.Text = currentPage.ToString() + "/" + pageCount.ToString() + "页";
this.labelCount.Text = "共" + displayCount.ToString() + "条";
currentPageChange(this, null);
if (currentPage == pageCount)
{
this.lnkNext.Enabled = false;
this.lnkLast.Enabled = false;
}
else
{
this.lnkNext.Enabled = true;
this.lnkLast.Enabled = true;
}
if (currentPage==1)
{
this.lnkPrev.Enabled = false;
this.lnkFirst.Enabled = false;
}
else
{
this.lnkPrev.Enabled = true;
this.lnkFirst.Enabled = true;
}
}
#region 当前页,只可正整数
private void txtBxNumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)8)
{
e.Handled = true;
}
}
#region 第一页
private void InkFirst_Click(object sender, EventArgs e)
{
currentPage = 1;
DrawControl();
}
#endregion
#region 前一页
private void InkPrew_Click(object sender, EventArgs e)
{
currentPage--;
DrawControl();
}
#endregion
#region 下一页
private void InkNext_Click(object sender, EventArgs e)
{
currentPage++;
DrawControl();
}
#endregion
#region 最后一页
private void InkLast_Click(object sender, EventArgs e)
{
currentPage = pageCount;
DrawControl();
}
#endregion
//页数只可数据整数
private void txtBxNumber_KeyPress_1(object sender, KeyPressEventArgs e)
{
//IsNumber:指定字符串中位于指定位置的字符是否属于数字类别
//IsPunctuation:指定字符串中位于指定位置的字符是否属于标点符号类别
//IsControl:指定字符串中位于指定位置的字符是否属于控制字符类别
if (!Char.IsNumber(e.KeyChar) && !Char.IsPunctuation(e.KeyChar) && !Char.IsControl(e.KeyChar))
{
e.Handled = true; //获取或设置一个值,指示是否处理过System.Windows.Forms.Control.KeyPress事件
}
else if (Char.IsPunctuation(e.KeyChar))
{
e.Handled = true;
}
}
#endregion
#region 页数选择限制
private void txtBxNumber_TextChanged(object sender, EventArgs e)
{
try
{
if (this.txtBxNumber.Text.Length > 0 && int.Parse(this.txtBxNumber.Text) > pageCount)
{
this.txtBxNumber.Text = pageCount.ToString();
}
else if (int.Parse(this.txtBxNumber.Text) == 0)
{
this.txtBxNumber.Text = "1";
}
}
catch
{ }
}
#endregion
#region Go的事件
private void btnGo_Click(object sender, EventArgs e)
{
if (this.txtBxNumber.Text.Length == 0 || int.Parse(this.txtBxNumber.Text) > pageCount)
{
return;
}
currentPage = int.Parse(this.txtBxNumber.Text);
DrawControl();
}
#endregion
#region 每页数据量改变的时候
private void txtperpage_Leave(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.txtperpage.Text))
{
this.perPage = 50;
this.txtperpage.Text = "50";
}
else
{
try
{
this.perPage = Convert.ToInt32(this.txtperpage.Text);
}
catch
{
MessageBox.Show("请填写数字!", "提示");
return;
}
if (Convert.ToInt32(this.txtperpage.Text) > maxPerPage)
{
this.txtperpage.Text = maxPerPage.ToString();
this.perPage = maxPerPage;
MessageBox.Show("每页最大只能是" + maxPerPage,"提示");
}
}
displayCount = Math.Max(DisplayCount, 1);
perPage = Math.Min(this.perPage, displayCount);
pageCount = displayCount / perPage;
if (displayCount % perPage != 0)
{
pageCount++;
}
currentPage = 1;
}
#endregion
}
//设计视图源码
partial class PaperControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.txtBxNumber = new DevComponents.DotNetBar.Controls.TextBoxX();
this.txtperpage = new DevComponents.DotNetBar.Controls.TextBoxX();
this.labelCount = new DevComponents.DotNetBar.LabelX();
this.lblPageNum = new DevComponents.DotNetBar.LabelX();
this.lnkFirst = new System.Windows.Forms.LinkLabel();
this.lnkPrev = new System.Windows.Forms.LinkLabel();
this.labelX1 = new DevComponents.DotNetBar.LabelX();
this.labelX2 = new DevComponents.DotNetBar.LabelX();
this.lnkNext = new System.Windows.Forms.LinkLabel();
this.lnkLast = new System.Windows.Forms.LinkLabel();
this.labelX3 = new DevComponents.DotNetBar.LabelX();
this.btnGo = new DevComponents.DotNetBar.ButtonX();
this.labelX4 = new DevComponents.DotNetBar.LabelX();
this.panelEx1.SuspendLayout();
this.SuspendLayout();
//
// panelEx1
//
this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx1.Controls.Add(this.btnGo);
this.panelEx1.Controls.Add(this.lnkLast);
this.panelEx1.Controls.Add(this.lnkNext);
this.panelEx1.Controls.Add(this.lnkPrev);
this.panelEx1.Controls.Add(this.lnkFirst);
this.panelEx1.Controls.Add(this.txtBxNumber);
this.panelEx1.Controls.Add(this.txtperpage);
this.panelEx1.Controls.Add(this.labelX4);
this.panelEx1.Controls.Add(this.labelX2);
this.panelEx1.Controls.Add(this.labelX3);
this.panelEx1.Controls.Add(this.labelX1);
this.panelEx1.Controls.Add(this.labelCount);
this.panelEx1.Controls.Add(this.lblPageNum);
this.panelEx1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelEx1.Location = new System.Drawing.Point(0, 0);
this.panelEx1.Name = "panelEx1";
this.panelEx1.Size = new System.Drawing.Size(583, 38);
this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.panelEx1.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.panelEx1.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelEx1.Style.GradientAngle = 90;
this.panelEx1.TabIndex = 0;
//
// txtBxNumber
//
//
//
//
this.txtBxNumber.Border.Class = "TextBoxBorder";
this.txtBxNumber.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtBxNumber.Location = new System.Drawing.Point(215, 10);
this.txtBxNumber.Name = "txtBxNumber";
this.txtBxNumber.Size = new System.Drawing.Size(40, 21);
this.txtBxNumber.TabIndex = 3;
this.txtBxNumber.TextChanged += new System.EventHandler(this.txtBxNumber_TextChanged);
//
// txtperpage
//
//
//
//
this.txtperpage.Border.Class = "TextBoxBorder";
this.txtperpage.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtperpage.Location = new System.Drawing.Point(501, 10);
this.txtperpage.Name = "txtperpage";
this.txtperpage.Size = new System.Drawing.Size(40, 21);
this.txtperpage.TabIndex = 2;
this.txtperpage.Text = "50";
this.txtperpage.Leave += new System.EventHandler(this.txtperpage_Leave);
//
// labelCount
//
//
//
//
this.labelCount.BackgroundStyle.Class = "";
this.labelCount.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelCount.Location = new System.Drawing.Point(401, 11);
this.labelCount.Name = "labelCount";
this.labelCount.Size = new System.Drawing.Size(55, 20);
this.labelCount.TabIndex = 1;
this.labelCount.Text = "共0条";
//
// lblPageNum
//
//
//
//
this.lblPageNum.BackgroundStyle.Class = "";
this.lblPageNum.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.lblPageNum.Location = new System.Drawing.Point(329, 11);
this.lblPageNum.Name = "lblPageNum";
this.lblPageNum.Size = new System.Drawing.Size(60, 20);
this.lblPageNum.TabIndex = 0;
this.lblPageNum.Text = "1/1页";
//
// lnkFirst
//
this.lnkFirst.AutoSize = true;
this.lnkFirst.Location = new System.Drawing.Point(17, 15);
this.lnkFirst.Name = "lnkFirst";
this.lnkFirst.Size = new System.Drawing.Size(29, 12);
this.lnkFirst.TabIndex = 4;
this.lnkFirst.TabStop = true;
this.lnkFirst.Text = "首页";
this.lnkFirst.Click += new System.EventHandler(this.InkFirst_Click);
//
// lnkPrev
//
this.lnkPrev.AutoSize = true;
this.lnkPrev.Location = new System.Drawing.Point(51, 15);
this.lnkPrev.Name = "lnkPrev";
this.lnkPrev.Size = new System.Drawing.Size(41, 12);
this.lnkPrev.TabIndex = 5;
this.lnkPrev.TabStop = true;
this.lnkPrev.Text = "上一页";
this.lnkPrev.Click += new System.EventHandler(this.InkPrew_Click);
//
// labelX1
//
//
//
//
this.labelX1.BackgroundStyle.Class = "";
this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX1.Location = new System.Drawing.Point(467, 11);
this.labelX1.Name = "labelX1";
this.labelX1.Size = new System.Drawing.Size(30, 23);
this.labelX1.TabIndex = 1;
this.labelX1.Text = "每页";
//
// labelX2
//
//
//
//
this.labelX2.BackgroundStyle.Class = "";
this.labelX2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX2.Location = new System.Drawing.Point(547, 12);
this.labelX2.Name = "labelX2";
this.labelX2.Size = new System.Drawing.Size(20, 23);
this.labelX2.TabIndex = 1;
this.labelX2.Text = "条";
//
// lnkNext
//
this.lnkNext.AutoSize = true;
this.lnkNext.Location = new System.Drawing.Point(100, 15);
this.lnkNext.Name = "lnkNext";
this.lnkNext.Size = new System.Drawing.Size(41, 12);
this.lnkNext.TabIndex = 5;
this.lnkNext.TabStop = true;
this.lnkNext.Text = "下一页";
this.lnkNext.Click += new System.EventHandler(this.InkNext_Click);
//
// lnkLast
//
this.lnkLast.AutoSize = true;
this.lnkLast.Location = new System.Drawing.Point(147, 15);
this.lnkLast.Name = "lnkLast";
this.lnkLast.Size = new System.Drawing.Size(29, 12);
this.lnkLast.TabIndex = 5;
this.lnkLast.TabStop = true;
this.lnkLast.Text = "末页";
this.lnkLast.Click += new System.EventHandler(this.InkLast_Click);
//
// labelX3
//
//
//
//
this.labelX3.BackgroundStyle.Class = "";
this.labelX3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX3.Location = new System.Drawing.Point(182, 12);
this.labelX3.Name = "labelX3";
this.labelX3.Size = new System.Drawing.Size(30, 20);
this.labelX3.TabIndex = 1;
this.labelX3.Text = "转到";
//
// btnGo
//
this.btnGo.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnGo.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
this.btnGo.Location = new System.Drawing.Point(286, 10);
this.btnGo.Name = "btnGo";
this.btnGo.Size = new System.Drawing.Size(30, 20);
this.btnGo.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnGo.TabIndex = 6;
this.btnGo.Text = "Go";
this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
//
// labelX4
//
//
//
//
this.labelX4.BackgroundStyle.Class = "";
this.labelX4.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.labelX4.Location = new System.Drawing.Point(259, 12);
this.labelX4.Name = "labelX4";
this.labelX4.Size = new System.Drawing.Size(20, 23);
this.labelX4.TabIndex = 1;
this.labelX4.Text = "页";
//
// PaperControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.panelEx1);
this.Name = "PaperControl";
this.Size = new System.Drawing.Size(583, 38);
this.panelEx1.ResumeLayout(false);
this.panelEx1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private DevComponents.DotNetBar.PanelEx panelEx1;
private DevComponents.DotNetBar.LabelX lblPageNum;
private DevComponents.DotNetBar.LabelX labelCount;
private DevComponents.DotNetBar.Controls.TextBoxX txtperpage;
private DevComponents.DotNetBar.Controls.TextBoxX txtBxNumber;
private System.Windows.Forms.LinkLabel lnkFirst;
private System.Windows.Forms.LinkLabel lnkPrev;
private DevComponents.DotNetBar.LabelX labelX1;
private DevComponents.DotNetBar.LabelX labelX2;
private System.Windows.Forms.LinkLabel lnkNext;
private System.Windows.Forms.LinkLabel lnkLast;
private DevComponents.DotNetBar.LabelX labelX3;
private DevComponents.DotNetBar.ButtonX btnGo;
private DevComponents.DotNetBar.LabelX labelX4;
}