C# как написать код для следующих и предыдущих кнопок в flowlayoutpanel
у меня есть кнопки страницы в flowlayoutpanel`1,2,3,4 и кнопки next и previous,если я нахожусь на второй странице и нажимаю на кнопку next, она будет перемещена на 3 страницы, а если я нажму на кнопку previous, она будет перемещена на 1 страницу.
Кто может мне помочь, я думаю,что должен объявить любую переменную сверху, например int index, а затем записать ее в мои следующие и предыдущие функции.
Что я уже пробовал:
Предложенный Филом о`
int currentPage; int pageCount;
public Gallery() { InitializeComponent(); for (int i = 1; i <= Controller.books.Count / 4 + 1; i++) { Button btn = new Button(); btn.Text = i.ToString(); flowLayoutPanel2.Controls.Add(btn); btn.Click += new EventHandler(show); } }
public void show(object sender, EventArgs e) { Button ays = sender as Button; int a = (int.Parse(ays.Text) - 1) * 4; int b = a + 4; this.Sharel(a, b); }
и мои следующие и предыдущие кнопки.
Button button = new Button(); button.Text = "previous"; flowLayoutPanel2.Controls.Add(button); button.Click += new EventHandler(prev); Button bt = new Button(); bt.Text = "next"; flowLayoutPanel2.Controls.Add(bt); bt.Click += new EventHandler(next);
public void prev(object sender,EventArgs e) { int a = Math.Max(0, currentPage - 1); int b = Math.Min(pageCount, a + 4); Sharel(a, b); } public void next(object sender, EventArgs e) { int a = Math.Min(pageCount, currentPage + 1); int b = Math.Min(pageCount, a + 4); Sharel(a, b); }
public void Sharel(int start = 0, int end = 0) { currentPage = start; flowLayoutPanel1.Controls.Clear(); for (int i = start; i < end; i++) { if (i >= Controller.books.Count) { break; } if (end == 0) { end = Controller.books.Count; } Book item = Controller.books[i]; FlowLayoutPanel flp = new FlowLayoutPanel(); flp.BackColor = Color.PaleGoldenrod; flp.AutoSize = true; flp.MinimumSize = new Size(10, 100); Label lb = new Label(); lb.Text = "Title: " + item.title + "\n" + "Autor: " + item.author + "\n" + "Count: " + item.count + "\n" + "Price: " + item.price; lb.ForeColor = Color.Black; lb.AutoSize = true; flp.Controls.Add(lb); if (item.image != String.Empty) { PictureBox pb = new PictureBox(); pb.Location = new Point(20, 80); pb.Image = Image.FromFile("Nkarners/" + item.image); pb.SizeMode = PictureBoxSizeMode.StretchImage; flp.Controls.Add(pb); } Button bt = new Button(); bt.Location = new Point(30, 30); bt.MinimumSize = new Size(10, 40); bt.Text = "Delete"; flp.Controls.Add(bt); bt.Click += new EventHandler(delete); flowLayoutPanel1.Controls.Add(flp); bt.Tag = item.id.ToString(); Button b = new Button(); b.AutoSize = true; b.MinimumSize = new Size(10, 40); b.Text = "Edit"; flp.Controls.Add(b); b.Click += new EventHandler(edit); b.Tag = item.id.ToString(); button2.Tag = b.Tag; Button button = new Button(); button.AutoSize = true; button.MinimumSize = new Size(10, 40); button.Text = "Order"; flp.Controls.Add(button); button.Click += new EventHandler(order); button.Tag = item.id.ToString(); } }
phil.o
Единственный класс FlowLayoutPanel, который я нашел, находится в System.Окна.Пространство имен Forms и, похоже, не подходит для отображения страниц. Может ли быть так, что вам нужен TabControl
вместо этого?
Suren97
нет, мне нужна flowlayoutpanel, мои страницы работают, например,когда я нажимаю на кнопку 1 страница, она показывает мне данные 1 страницы, когда я нажимаю на кнопку 2 Страница, она показывает мне данные 2 страницы и так далее.Теперь мне нужно добавить кнопки prev и next
phil.o
Затем, возможно, показ кода, который выполняется, когда вы нажимаете на кнопку 1, например, поможет нам понять, как помочь вам :)
Suren97
Я написал код страниц`1,2,3,4,5 и так далее, на каждой странице есть 4 данных,например, если у меня есть 10 данных, то это будет 3 страницы`4+4+2, мне просто нужно написать функцию для кнопок prev и next.я должен сказать, что когда я нажимаю на кнопку next или предыдущую, она будет перемещена на следующую страницу или предыдущую.
phil.o
Более конкретно, не могли бы вы показать нам код в Sharel(int a, int b)
метод, пожалуйста?
Suren97
да, конечно, я добавлю это в свой вопрос сейчас
Suren97
я обновил, можете посмотреть