List(Of T) a Eventy   otázka

VB.NET, Komponenty

Dobrý den,

nedaří se mi přijít na řešení jak posílat eventy s kolekce List(Of T) to trřídy ve které je obsažena tak bych prosil o radu, po

kud někdo ví řešení.

Pro zjednodušení máme 2 třídy:

- ClassUzivatele

- ClassKontakty

Přičemž ClassKontakt ukládám do generické kolekce jako property, tedy:

Public Class ClassUzivatele

   Private WithEvents _kontakty As List(Of ClassKontakty)


   Public ReadOnly Property Kontakty As List(Of ClassKontakty)
     Get
         Return _kontakty 
     End Get
    End Property

End Class

A teď bych potřeboval v property Kontakty občas vyhodit Event. Např. když se změni hodnota nějaké property v ClassKontakty která je v kolekci, chci vyhodit event, aby třída ClassUzivatele refreshla data, popř. abych ten Event nechal probublat ještě o úroveň výš.

Nevíte někdo jak toto řešit? Třída List(Of T) jako taková žádné eventy nemá a když je deklaruji uvnitř třídy ClassKontakty, tak jsou přes property Kontakty (celkem logicky) nedostupné.

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

Dajte nejaký event do ClassKontakty, a potom ich prepojte cez AddHandler.

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

Díky za reakci. To jsem jižzkoušel a nefunguje to, protože v ClassUzivatele se nedostanu na eventy z ClassKontakty

Property totiž není typu ClassKontakty ale je to generická kolekce List(Of ClassKontakty).

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

To je snáď jednoduché, nie? Prejdete všetky prvky kolekcie a potom AddHandler na každý prvok zvlášť. Ak Vám to nevyhovuje, spravte si triedu s

Inherits List(Of ClassKontakty)

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

Děkuji, už to funguje. AddHandler jsem měl použitý už předtím, ale kvůli jedné drobnosti uvnitř třídy se mi event nevyhazoval a já dospěl k závěru, že to fungovat nemá a že na to jdu špatně.

Už to je ok, děkuji za popostrčení.

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