Handler   zodpovězená otázka

VB.NET

Vysvětlí mi někdo

jaký je význam HANDLERu

Je to jen vazba události a procedury

nebo jsou další možnosti ...

jak Handler využít ???

Sub Show_TextBox1_handler() Handles TextBox1.KeyDown
        MsgBox("TextBox1 KeyDown")
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Klíčové slovo Handles DEKLARATIVNĚ napojuje metodu (tzv. Event Handler) na událost. Jiné využití (kromě napojení více událostí na jednu metodu) není. Jiná možnost je napojit metodu na událost DYNAMICKY pomocí klíčového slova AddHandler.

Na stejném principu funguje přiřazení jakékoliv metody s odpovídající signaturou (návratová hodnota, počet a typ parametrů) do delegáta (což je zástupce metody).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za reakci

A ještě pls nějaký příklad z praxe

např. volání procedury

(vazby dvou procedur)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím co máte na mysli. Vazba dvou procedur se nekoná, lze pouze několik událostí stejného druhu napojit na jednu metodu která je potom volána z příslušného zdroje události.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Deklarativní napojení více událostí na jednu metodu by mohlo vypadat nějak takhle

Private Sub metoda(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles f2.Click, Button1.Click, Label2.TextChanged

        ' programový kód, který se má provést v případě vyvolání
        ' libovolné z výše uvedených událostí
    End Sub

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

OK

díky za pomoc pánové :-D

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě jedna otázka

mám na formuláři tlačítka ...

např 8 tlačítek: Btn_1 - Btn_2 ... - Btn_8

nelze nadeklarovat nějak jednoduše "sadu" ...

nebo tak nějak

Protože mám jednu proceduru,

která dělá akci na základě Sender.Name

a já mám pod každým tlačítkem volání

Spust_neco(Sender)

Jinak ve VB6.0 byla možnost jména prvku (v properties)

jako Tlacitko(1) ... další btn ... Tlacitko(2)

ve VB.NET se mi to nedaří specifikovat ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pole ovládacích prvků známé z VB6 ve VB.NET vytvořit nelze.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste si projít tuto diskusi

http://www.vbnet.cz/forum-tema--503-nezn...

tam se něco podobného probíralo (jenomže pro PictureBox, pro Vaše tlačítka to bude úplně stejné).

Je zde také příklad toho druhého způsobu využití handleru, tedy dynamické napojení události na metodu pomocí klauzule

AddHandler VytvareneTlacitko.Click, AddressOf VaseMetoda

jinak v kostce - pokud si tlačítka budete vytvářet dynamicky z chodu aplikace nejspíš v nějakém cyklu, tak v rámci tvorby každého tlačítka si k němu pro událost Click přiřadíte i odpovídající metodu tuto událost obhospodařující a vůbec nevadí, že všem tlačítkům přiřadíte tu metodu stejnou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za radu ...

Je mi jasné, že se dá opakovat volání v každé proceduře

Šlo mi o to, abych věděl o dalších možnostech

jak psát co nejčistčí kód

a hlavně jsem rád, že je mi jasnější význam použití HANDLERu

Ještě jednou díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě doplnění,

věděl jsem, že podobný problém jste tady již nejednou probírali, ale zaboha jsem to nemohl najít.

Ale nakonec se zadařilo - koukněte úplně na konec diskuse pod článkem http://www.vbnet.cz/clanek--45-vb_net_od...

tam máte konkrétní příklad i toho, jak udělat "pole controlů" a taky jak u nich aplikovat ten handler.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback