banboshi_V1/halftoneproject-master/Code/UI/UIPagination.cs

111 lines
2.9 KiB
C#
Raw Permalink Normal View History

2023-10-31 13:19:29 +08:00
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 ProductionControl.UI
{
public partial class UIPagination : UserControl
{
/// <summary>
/// 1-n
/// </summary>
public int CurrentPage { get; private set; } = 1;
/// <summary>
/// 每页条数
/// </summary>
public int PageSize { get; set; } = 20;
/// <summary>
/// 总条数
/// </summary>
public int TotalCount { get; set; } = 0;
/// <summary>
///
/// </summary>
public Action refresh;
/// <summary>
/// 总页数
/// </summary>
private int TotalPages
{
get { return (int)(TotalCount * 1.0f / PageSize + 0.5); }
}
public UIPagination()
{
InitializeComponent();
}
private void UIPagination_Load(object sender, EventArgs e)
{
this.cobPageNum.Items.Add(1);
}
private void freshUI()
{
this.btnFirst.Enabled = this.btnPre.Enabled = (CurrentPage > 1);
this.btnLast.Enabled = this.btnNext.Enabled = (CurrentPage < TotalPages);
if (CurrentPage > TotalPages)
CurrentPage = TotalPages;
this.lblPagesCount.Text = $"/{TotalPages}页";
int liTotalPages = TotalPages;
while (this.cobPageNum.Items.Count != liTotalPages)
{
if (this.cobPageNum.Items.Count > liTotalPages)
this.cobPageNum.Items.RemoveAt(this.cobPageNum.Items.Count - 1);
else
this.cobPageNum.Items.Add(this.cobPageNum.Items.Count + 1);
}
}
private void numPageSize_ValueChanged(object sender, EventArgs e)
{
PageSize = (int)numPageSize.Value;
freshUI();
refresh?.Invoke();
}
private void btnPre_Click(object sender, EventArgs e)
{
CurrentPage--;
freshUI();
refresh?.Invoke();
}
private void btnNext_Click(object sender, EventArgs e)
{
CurrentPage++;
freshUI();
refresh?.Invoke();
}
private void btnFirst_Click(object sender, EventArgs e)
{
CurrentPage = 1;
freshUI();
refresh?.Invoke();
}
private void btnLast_Click(object sender, EventArgs e)
{
CurrentPage = TotalPages;
freshUI();
refresh?.Invoke();
}
private void cobPageNum_SelectedIndexChanged(object sender, EventArgs e)
{
CurrentPage = cobPageNum.SelectedIndex + 1;
freshUI();
refresh?.Invoke();
}
}
}