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; namespace Azylee.WinformSkin.UserWidgets.PageWidgets { public partial class PageToolBar : SuperUserControl { public delegate void PageDataProvider(object sender, PageDataProviderArgs e); PageDataProvider Provider; int PageIndex = 0; int PageTotal = 0; int PageSize = 0; int DataCount = 0; bool IsInit = false; public PageToolBar() { InitializeComponent(); } private void PageToolBar_Load(object sender, EventArgs e) { } #region 初始化和修改参数 public void Init(PageDataProvider provider, int pageIndex, int dataCount, int pageSize) { if (!DesignMode) { if (!IsInit) { Provider += provider; PageIndex = pageIndex; PageSize = pageSize; DataCount = dataCount; PageTotal = DataCount % pageSize == 0 ? DataCount / pageSize : (DataCount / pageSize) + 1; IsInit = true; } } } public void Init(PageDataProvider provider, int pageIndex, int pageSize) { Init(provider, pageIndex, pageSize, pageSize); } /// /// 更新数据总数和页总数 /// /// public void SetDataCount(int dataCount) { if (!DesignMode) { DataCount = dataCount; PageTotal = DataCount % PageSize == 0 ? DataCount / PageSize : (DataCount / PageSize) + 1; if (PageIndex > PageTotal) PageIndex = 1; if (PageTotal == 0) PageTotal = 1; if (!ParentForm.IsDisposed) { ParentForm.Invoke(new Action(() => { //调整控件展示界面(第几页,共几页) LBPageDesc.Text = string.Format("第 {0} 页,共 {1} 页", PageIndex, PageTotal); })); } } } #endregion #region 操作 /// /// 加载第一页 /// public void ReadFirstPage() { if (!DesignMode) { PageIndex = 1; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } } /// /// 加载默认页(或刷新) /// public void ReadDefaultPage() { if (!DesignMode) { PageIndex = PageIndex >= 1 ? PageIndex : 1; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } } public void Clear() { PageIndex = 1; Invoke(new Action(() => { LBPageDesc.Text = "第 1 页,共 1 页"; })); } #endregion #region 快速跳转按钮 private void BTPageUpFirst_Click(object sender, EventArgs e) { PageIndex = 1; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } private void BTPageUpOne_Click(object sender, EventArgs e) { PageIndex = PageIndex <= 1 ? 1 : PageIndex - 1; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } private void BTPageDownOne_Click(object sender, EventArgs e) { PageIndex = PageIndex >= PageTotal ? PageTotal : PageIndex + 1; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } private void BTPageDownLast_Click(object sender, EventArgs e) { PageIndex = PageTotal; QueryPageData(new PageDataProviderArgs(PageIndex, PageSize)); } #endregion #region 获取数据 private void QueryPageData(PageDataProviderArgs args) { Provider?.Invoke(this, args); //if (dataCount != null) SetDataCount(dataCount.Value); } #endregion } }