przesłać dodatkowy parametr do EventHandler

0

Hej!
Tworzę sobie przycisk:

 Button btnZapisz = new Button();

następnie dodaję do niego zdarzenie przy naciśnięciu

btnZapisz.Click += new EventHandler(btnZapisz_Click);

mam stworzoną metodę

       private void btnZapisz_Click(object sender, EventArgs e)
        {
           
            MessageBox.Show("przycisk "+ ((Button)sender).Name);
        }

Teraz chcę zrobić to samo, tylko podczas dodawania zdarzenia Click, chciałbym przesłać jakiś parametr a następnie odebrać go w metodzie btnZapisz_Clik.

Czy ktoś pomoże mi w tym?

pozdrawiam!

0

tak se ne da - to tak nie działa. Zdarzenia nie wywołujesz Ty tylko user klikając w przycisk.

0

Możesz użyć parametru sender do sprawdzenia jaki przycisk został wciśnięty (jeśli masz ich kilka..)

0

Mam w bazie 10 rekordów. Każdy przycisk z 10 odpowiada jednemu rekordowi w bazie i coś robi z tym rekordem.
Po naciśnięciu przycisku, w metodzie wywołanej po kliknięciu muszę znać id tego rekordu. Te id mogę umieścić w atrybucie name przycisku nazywając kolejne przyciski btnZapisz1, btnZapisz2 ... itd. a potem odwołać się do parametru sender.
Ale ja nie chcę tak robić ( wydaje mi się to brzydkim rozwiązaniem gdyż potem muszę wydobywać z nazwy przycisku numer) tylko, chcę osobno przesłać te ID do metody.

A gdybym chciał do metody onClick przesłać np jakiś własny obiekt to bym już nie mógł go umieścić w atrybucie name.

0

Zaraz...
Masz 10 rekordów i 10 przycisków, każdy z nich obsługujesz w oddzielnej metodzie, zatem jest też ich 10.
Dlaczego zatem w każdej z metod nie zdefiniujesz sobie id rekordu na którym ma ona operować?

0

Nie mam 10 metod tylko 1. Każdy z przycisków posiada zdarzenie onClick, które wskazuje na tą metodę. I do tej mteody chcę przesłać ID

0

Zakładam, że liczba przycisków zależy od ilości rekordów w bazie - skoro tak to zapewne dynamicznie tworzysz Buttony. Jeżeli tak to przy tworzeniu Buttonów możesz skorzystać z właściwości Tag buttona. W nim zapisz sobie ID rekordu, natomiast w metodzie, która obsługuje zdarzenie OnClick odczytuj daną właściwość.

0

jesli potrzebujesz z jakas kontrolka zwiazac wiecej skomplikowanych danych (obiektow) mozesz takze stworzyc klase (np. MyButton) dziedziczaca po odpowiedniej kontrolne (MyButton z Button) i dodac do niej odpowiednie wlasciwosci etc.

np.
public class RecordButton : Button
{
private RecordObject _record;

public int RecordId { get{ return _record.Id;} }
public override string Text { get {return _record.FullName;} set {} }

public RecordButton(RecordObject record)
{
_record = record;
}
}

0

Skorzystaj z właściwości Tag przycisku, tam możesz zapisywać id rekordu.

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