using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MaiMuAOI.SysUI.DefectPicShow
{
public partial class PageCtrl : UserControl
{
public PageCtrl()
{
InitializeComponent();
numPageDataCount.Controls[0].Visible = false;
numGoto.Controls[0].Visible = false;
}
#region 分页字段和属性
private int pageIndex = 1;
///
/// 当前页数
///
public virtual int PageIndex
{
get { return pageIndex; }
set { pageIndex = value; }
}
private int pageSize = 10;
///
/// 每页记录数
///
public virtual int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private int recordCount = 0;
///
/// 总记录数
///
public virtual int RecordCount
{
get { return recordCount; }
set { recordCount = value; }
}
private int pageCount = 0;
///
/// 总页数
///
public int PageCount
{
get
{
if (pageSize != 0)
{
pageCount = GetPageCount();
}
return pageCount;
}
}
#endregion
#region 页码变化时触发事件
public event EventHandler OnPageChanged;
#endregion
#region 分页及相关事件功能实现
///
/// 设窗体控件全部可用
///
private void SetFormCtrEnabled()
{
linkFirst.Enabled = true;
linkPrevious.Enabled = true;
linkNext.Enabled = true;
linkLast.Enabled = true;
btnGo.Enabled = true;
}
///
/// 计算总页数
///
///
private int GetPageCount()
{
if (PageSize == 0)
{
return 0;
}
int pageCount = RecordCount / PageSize;
if (RecordCount % PageSize == 0)
{
pageCount = RecordCount / PageSize;
}
else
{
pageCount = RecordCount / PageSize + 1;
}
return pageCount;
}
///
/// 用于客户端调用
///
public void DrawControl(int count)
{
recordCount = count;
DrawControl(false);
}
///
/// 根据不同的条件,改变页面控件的呈现状态
///
private void DrawControl(bool callEvent)
{
lblCurrentPage.Text = PageIndex.ToString();
lblPageCount.Text = PageCount.ToString();
lblTotalCount.Text = RecordCount.ToString();
numPageDataCount.Value = PageSize;
if (callEvent && OnPageChanged != null)
{
OnPageChanged(this, null);//当前分页数字改变时,触发委托事件
}
SetFormCtrEnabled();
if (PageCount == 1)//有且仅有一页时
{
linkFirst.Enabled = false;
linkPrevious.Enabled = false;
linkNext.Enabled = false;
linkLast.Enabled = false;
btnGo.Enabled = false;
}
else if (PageIndex == 1)//当前页为第一页时
{
linkFirst.Enabled = false;
linkPrevious.Enabled = false;
}
else if (PageIndex == PageCount)//当前页为最后一页时
{
linkNext.Enabled = false;
linkLast.Enabled = false;
}
}
#endregion
#region 相关控件事件
//首页按钮
private void linkFirst_Click(object sender, EventArgs e)
{
PageIndex = 1;
DrawControl(true);
}
//上一页按钮
private void linkPrevious_Click(object sender, EventArgs e)
{
PageIndex = Math.Max(1, PageIndex - 1);
DrawControl(true);
}
//下一页按钮
private void linkNext_Click(object sender, EventArgs e)
{
PageIndex = Math.Min(PageCount, PageIndex + 1);
DrawControl(true);
}
//尾页按钮
private void linkLast_Click(object sender, EventArgs e)
{
PageIndex = PageCount;
DrawControl(true);
}
///
/// 按下enter键,执行跳转页面功能
///
private void txtPageNum_KeyPress(object sender, KeyPressEventArgs e)
{
btnGo_Click(null, null);
}
///
/// 跳转页数限制
///
private void txtPageNum_TextChanged(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(numGoto.Value.ToString(), out num) && num > 0)
{ //TryParse 函数,将字符串转换成等效的整数,返回bool型,判断是否转换成功。
//输入除数字以外的字符是转换不成功的
if (num > PageCount) //输入数量大于最大页数时,文本框自动显示最大页数
{
numGoto.Value = PageCount;
}
}
}
///
/// 跳转按钮
///
///
///
private void btnGo_Click(object sender, EventArgs e)
{
int num = 0;
if (int.TryParse(numGoto.Value.ToString(), out num) && num > 0)
{
PageIndex = num;
DrawControl(true);
}
}
#endregion
bool isTextChanged = false;
///
/// 每页显示的记录数改变时
///
private void txtPageSize_TextChanged(object sender, EventArgs e)
{
int num = 0;
//输入不符合规范时,默认设置为100
if (!int.TryParse(numPageDataCount.Text.Trim(), out num) || num <= 0)
{
num = 100;
numPageDataCount.Value = 100;
}
else
{
isTextChanged = true;
}
pageSize = num;
}
///
/// 光标离开 每页设置文本框时,显示到首页
private void txtPageSize_Leave(object sender, EventArgs e)
{
if (isTextChanged)
{
isTextChanged = false;
linkFirst_Click(null, null);
}
}
}
}