číslo prvku s FOR   otázka

VB.NET, Algoritmy

Mám na formuláři 10 Combobxů no a do všech potřebuju zadat stejný items, a mám je všechny pojmenovaný ComboBox1 až ComboBox10. Takže mě napadlo, při mojí lenosti že by to šlo doplnit cyklem for, ale nevím jak to doplnit o tu proměnou

Dim z As Integer
        For z = 1 To 10
            ComboBox(z).Items.Add("sakldj"))
        Next

Napadlo mě teda že ta proměnná z by mohla být v závorce, ale nemohla, takže nevím jak jí tam mám zakomponovat. Předem děkuji za odpovědi.

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

No v .Netu nelze názvy proměnných z designeru používat jako pole.

Máte na vybranou buď si proměnné v konstruktoru vytvořit dynamicky jako pole, pak je můžete procházet cykly.

Nebo pomocí fce. Find v příslušné kolekci.

For i As Integer = 1 To 10
       Dim cb As ComboBox = Me.Controls.Find("ComboBox" & i.ToString(), False)(0)
       cb.Items.Add("ddd")
Next

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

Vůbec není nutné používat metodou Find, kterou se to zbytečně zpomalí:

For index = 0 To 9
  DirectCast(Me.Controls("ComboBox" & index.ToString()), _
             ComboBox).Items.Add("Položka")
Next
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zrovna tady bych právě Find doporučil použít a to s druhým parametrem True, bude to méně náchylné ke změnám a rozdíl v rychlosti bude naprosto zanedbatelný (na málokterém formuláři bývá víc než desítky komponent, takže jestli to hledá rekurzivně nebo ne je skoro jedno).

A oceníte to ve chvíli, kdy za půl roku někdo ty ComboBoxy vezme a umístí je třeba do komponenty Frame apod. Me.Controls(něco) pak už nic nenajde, protože nebudou přímo potomky formuláře.

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

Pokud v budoucnu existuje možnost, že se to bude takto předělávat, pak ano. Na jednoduché věci ale ne. "méně náchylné ke změnám" - to nechápu, je tím snad myšleno "méně náchylné k chybám při změnách"? Frame tím je asi myšleno GroupBox?

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

U většiny aplikací, se kterými jsem se setkal, takováhle možnost skutečně existovala a "myslet dopředu" tímto nebo podobným způsobem se vyplatilo.

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