Wiele Buttonów - jedna metoda Click z argumentem

0

Cześć. Tak się zastanawiam, czy:

Mając wiele Buttonów w programie, np Button1, Button2, Button3 [...] Button40 - chcąc stworzyć do każdego metodę, klikam sobie na każdego z nich i pojawiają mi się nowe metody gotowe do wklepania kodu do nich:


private void button1_Click(object sender, EventArgs e)
        {
            
        }

private void button2_Click(object sender, EventArgs e)
        {
            
        }

private void button3_Click(object sender, EventArgs e)
        {
            
        }

// i więcej

Czy da się to zastąpić jedną metodą z argumentem? Np:

private void buttonXX_Click(object sender, int argument)
        {
            if (argument == 1) ; // coś tam
            if (argument == 2) ; // co innego
        }

Kombinowałem z modyfikatorami private/public, wywalałem "object sender" z nawiasów, niestety nie wiem jak to zastosować. W Properties każdego komponentu nie mam możliwości wybrania tej metody z wprowadzeniem argumentu do Properties np: buttonXX_Click(1). A jeśli nie ma takiej możliwości, czy da się to wywalić do osobnej klasy w osobnym pliku? Proszę o pomoc

EDIT: po dalszym szukaniu rozwiązania na google udało mi się znaleźć coś takiego, co działa:

private void buttonXX_Click(object sender, EventArgs e)
        {
            string button = (sender as Button).Name.ToString();

            if (button == "button1") MessageBox.Show("Kliknięto button1");
            if (button == "button2") MessageBox.Show("Kliknięto button2");
            if (button == "button3") MessageBox.Show("Kliknięto button3");
        }
0

To ma być siatka z przycisków? Można tu użyć DataGridView z odpowiednim typem kolumn. Wtedy masz jeden event z podanymi współrzędnymi klikniętej komórki.

0

Grę tworzę i PictureBox'y są ikonami jednostek, jednakże przykład podałem na podstawie buttonów. :)

0

Możesz zrobić na przykład tak.

button1.Click += (obj, args) => { Button_Click(1); };
button2.Click += (obj, args) => { Button_Click(2); };

private void Button_Click(int parameter)
{
	
}
	
0

Możesz też wykorzystać właściwość "Tag" buttona i wpisać sobie tam numer, a później z sendera go odczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1