Nefunkční kód   zodpovězená otázka

VB.NET, Komponenty, WinForms

For Each it As Control In Me.Controls
            ListBox1.Items.Add(it.Name & " as " & it.GetType.BaseType.ToString)
        Next

Proč mi tenhle kód vypíše pouze TabControl1 a StatusStrip1 i když na formuláři mám ještě NotofyIcon1, SplitContainer1, ListView1, ListBox1... (celkem 13)?

Pokud je špatně, existuje kolekce kde jsou všechny prvky z formuláře?

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

Prvek může obsahovat další prvky, je třeba zjistit, zda prvek je kontejnerem a pokud ano, tak iterovat i ten.

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

Protože v kolekci Controls jsou pouze ovládací prvky přímo podřízené rodičovskému ovládacímu prvku, proto například věci umístěné na záložkách TabControlu najdete v kolekci Controls TabControlu a ne formuláře. Kolekce kde by bylo všechno není, je nutné napsat jednoduchou rekurzivní funkci.

Co se týče NotifyIcon tak to je (stejně jako např. Timer) tzv. nevizuální komponenta, která není v kolekci Controls, ale components.

nahlásit spamnahlásit spam 1 / 1 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