Cześć,
W jaki sposób mogę zrobić dynamiczne menu które będzie tworzyło w zależności od ilości jaką program potrzebuje, przyciski którymi będę mógł nawigować pomiędzy pytaniami w programie (piszę program do obsługi testów).
Chciałbym żeby to mniej więcej wyglądało tak:
Jakiej formatki użyć? Myślałem nad FlowLayoutPanel, ale nie wiem czy to jest najlepsza opcja.
Ktoś coś poradzi? Pozdrawiam...
Zrób sobie faktorkę i wykorzystuj ją w pętli, w zależności od tego ile będzie pytań:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Soft
{
static class ButtonFactory
{
public static Button GetButton(string text)
{
var button = new Button();
button.Text = text;
button.Width = 45;
button.Height = button.Width;
return button;
}
}
class Program
{
static void Main(string[] args)
{
var form = new Form();
var panel = new FlowLayoutPanel();
panel.AutoScroll = true;
panel.FlowDirection = FlowDirection.LeftToRight;
panel.WrapContents = false;
panel.Dock = DockStyle.Fill;
form.Controls.Add(panel);
var count = 10;
for(int i = 0; i < count; i++)
{
panel.Controls.Add(ButtonFactory.GetButton(string.Format("{0}", i + 1)));
}
form.ShowDialog();
}
}
}
Dziękuje bardzo za pomoc, o to mi własnie chodziło, pozdrawiam! :)
Jak wywołać teraz kliknięcie danego przycisku w tym panelu? Bo mam z tym lekki problem, próbowałem w taki sposób:
panel.Click+=new MouseEventHandler(button_click);
Ale to nie tak bo nie działa :D
Jak wywołać teraz kliknięcie danego przycisku w tym panelu?
Co to znaczy „wywołać kliknięcie”?
Zasymulować z kodu kliknięcie przycisku?
button.PerformClick();
Czy może chcesz po prostu oprogramować przycisk? To rób to dla przycisku, a nie dla panelu.
Panel jest nieistotny.
button.Click += ...
Chodzi o to ze mam wygenerowane te przyciski tak jak tam wyżej jest podane, i chce je wyciągnąć jakoś z tego flowlayoutpanelu żeby po kliknięciu w niego wywołała sie odpowiednia metoda. Jednak nie mam pomysłu na to jak sie do tego zabrać. Przecież tak normalnie nie wywołam button.Click :)
@Edit: już wiem, wystarczyło podczas tworzenia buttonów dodać event handler do każdego :)
Pozdrawiam