Ich habe ein paginiertes Panel erstellt, das die Liste der Steuerelemente lädt und bestimmte Menge von ihnen auf jeder Seite lädt, damit Sie es wechseln können. Es sieht aus wie SO und verwenden Sie die folgende Logik: PaginedPanel.cs
public partial class PaginatedPanel : UserControl
{
public int currentPage { get; set; } = 1;
public int itemsPerPage { get; } = 10;
public int pagesQt { get; set; }
private List items;
public PaginatedPanel()
{
InitializeComponent();
}
public void Add(List controls)
{
items = controls;
pagesQt = (int)Math.Ceiling((decimal)items.Count / itemsPerPage);
LoadPage(currentPage);
pgNumlbl.Text = $"{currentPage}/{pagesQt}";
}
private void LoadPage(int pageNum)
{
ClearPanel();
int startIndex = itemsPerPage * (pageNum - 1);
for (int itemNum = startIndex, numOnPage = 0; numOnPage < itemsPerPage; itemNum++, numOnPage++)
{
if (itemNum > items.Count - 1)
{
break;
}
flowLayoutPanel1.Controls.Add(items[itemNum]);
}
}
private void ClearPanel()
{
//Queue disposeQueue = new Queue();
//foreach (Control control in flowLayoutPanel1.Controls)
//{
// disposeQueue.Enqueue(control);
//}
flowLayoutPanel1.Controls.Clear();
//foreach (Control control in disposeQueue)
//{
// control.Dispose();
//}
}
private void prevBtn_Click(object sender, EventArgs e)
{
if (currentPage > 1)
{
currentPage--;
LoadPage(currentPage);
pgNumlbl.Text = $"{currentPage}/{pagesQt}";
}
}
private void nextBtn_Click(object sender, EventArgs e)
{
if (currentPage < pagesQt)
{
currentPage++;
LoadPage(currentPage);
pgNumlbl.Text = $"{currentPage}/{pagesQt}";
}
}
}
< /code>
Ich habe es mit Schaltflächen getestet und es funktioniert in Ordnung, sodass selbst Millionen von Steuerelementen geladen werden, die nicht gefrieren oder so. Eine Sache, die mir jedoch aufgefallen ist, ist, dass das konstante ständige Wechsel von Seiten den RAM -Verbrauch erhöht. Ich habe keine Ahnung warum. Es fügt die gleichen Steuerelemente hinzu und beseitigt, die in der Liste
gespeichert werden. Irgendwelche Vorschläge, warum das passiert?
Ich habe ein paginiertes Panel erstellt, das die Liste der Steuerelemente lädt und bestimmte Menge von ihnen auf jeder Seite lädt, damit Sie es wechseln können. Es sieht aus wie SO und verwenden Sie die folgende Logik: [b] PaginedPanel.cs [/b] [code]public partial class PaginatedPanel : UserControl { public int currentPage { get; set; } = 1; public int itemsPerPage { get; } = 10; public int pagesQt { get; set; }
private List items; public PaginatedPanel() { InitializeComponent(); }
public void Add(List controls) { items = controls;
private void nextBtn_Click(object sender, EventArgs e) { if (currentPage < pagesQt) { currentPage++; LoadPage(currentPage); pgNumlbl.Text = $"{currentPage}/{pagesQt}"; } } } < /code> Ich habe es mit Schaltflächen getestet und es funktioniert in Ordnung, sodass selbst Millionen von Steuerelementen geladen werden, die nicht gefrieren oder so. Eine Sache, die mir jedoch aufgefallen ist, ist, dass das konstante ständige Wechsel von Seiten den RAM -Verbrauch erhöht. Ich habe keine Ahnung warum. Es fügt die gleichen Steuerelemente hinzu und beseitigt, die in der Liste [/code] gespeichert werden. Irgendwelche Vorschläge, warum das passiert?
Ich habe ein paginiertes Panel erstellt, das die Liste der Steuerelemente lädt und bestimmte Menge von ihnen auf jeder Seite lädt, damit Sie es wechseln können. Es sieht aus wie SO und verwenden Sie...
Ich habe ein paginiertes Panel erstellt, das die Liste der Steuerelemente lädt und bestimmte Menge von ihnen auf jeder Seite lädt, damit Sie es wechseln können. Es sieht aus wie SO und verwenden Sie...
Visual Studio 2022. Lösung mit zwei Projekten: eine WPF C# UI -App und eine universelle Windows -Klassenbibliothek (UWP) in C ++. Ersteres bezieht sich auf letztere. Zur Kompilierung kann ich sehen,...
In meiner Parse-App habe ich die Paginierung aktiviert und zu Testzwecken die Anzahl der Objekte pro Seite auf 5 festgelegt. Wenn ich die App ausführe, wird dies in meiner TableView angezeigt
1
2
3...