reference na objekt podle stringu   otázka

C#, Reflexe

Potřebuji vytvořit referenci na objekt podle stringu. Mám takovouto reflexi:

for (int i = 1; i <= 10; i++)
   {
var box = (Object)("type" + i)
typeof(ComboBox).GetProperty("SelectedIndex").SetValue(box, 0, null);
   }

Jde o to, že mám názvy objektů, které se u mě liší jen číslem a chtěl bych toho využít k hromadnému nastavení property u těchto objektů.

Výsledkem tohoto kódu je ale jen toto: "Object does not match target type.".

Jak by to mělo být správně ? Jde to vůbec ?

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

Případně pokud někdo ví, jak optimalizovat toto:

type1.SelectedIndex = 0;
type2.SelectedIndex = 0;
type3.SelectedIndex = 0;
type4.SelectedIndex = 0;
type5.SelectedIndex = 0;
type6.SelectedIndex = 0;
type7.SelectedIndex = 0;
type8.SelectedIndex = 0;
type9.SelectedIndex = 0;
type10.SelectedIndex = 0;

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

Nešlo by dát ty comboboxy do samostatného kontejneru (třeba na jeden panel nebo do groupboxu)? Pak by stačilo projít kolekci controls toho panelu nebo groupboxu a pro každý combobox který v kolekci najdete nastavit požadované property.

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

Samozřejmě, že by šlo, pokud není žádná možnost to udělat přes reflexi, půjdu tímto směrem.

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

Nepomôže uložiť objekty do slovníka? Slovník je podobný, ako pole, ale namiesto číselného indexu, ako u polí, môžete mať index akéhokoľvek dátového typu. Nepoužívajte však slovník tam, kde stačí kolekcia, alebo dokonca iba pole.

http://msdn.microsoft.com/en-us/library/...

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

Findcontrol?

http://msdn.microsoft.com/en-us/library/...

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

Díky všem za rady.

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