Mám několik panelů, které skrývám a opět odkrývám. Potřebuju při stisknutí tlačítka provést něco jako: Panel1-Panel20.Visible=false;
Nevím jak na to. Jinam to co jsem psal jako příklad nefunguje :-D
Fórum › .NET
C# - neco až neco
Můžeš pomocí foreach procházet všechny prvky formuláře a pomocí if kontrolovat jakého jsou typu. Pak jen vesele nastavovat Visible na false.
To MZetko : Nepříliš elegantní řešení. Cyklus je uričtě dobrej nápad.
To MZetko : Ale to my nevíme, zda chce skrýt všechny panely nebo zda se jejich počet může měnit (to jsou jen předpoklady a mohou být mylné). Proto může být tvé řešení nevhodné a méně efektivní (je/jsou u něj potřeba další instance panelu).
To mephi : To pole už tam vlastně má (jestli jsem správně pochopil pojem "pole pointerů").
Obecně vzato se dá říct, že je to chyba v návrhu. Pokud se autor snaží udělat to, co myslím, tak by bylo lepší nechat panely tak jak jsou a jen měnit jejich pořadí (z-index). Ale mohl jsem ten záměr špatně pochopit.
Stejně tak jako tak je efektivnější dát je všechny na jeden zvláštní panel a prohledávat jeho kolekci Controls, čímž bude kód a formulář nejen přehlednější, ale pokud budou na Formu i další ovladací prvky, bude to i efektivnější, jak říkám. Paměťi ten jeden panel už tolik neubere, aby se to nedalo akceptovat.
Pokud ma byt zobrazen vzdy jen jeden, tak pri vytvareni dej vsem visible na false a true u toho, ktery ma byt videt. Pak staci, kdyz si budes pamatovat ten, ktery je prave videt, kteryzto pri prepnuti skryjes a zobrazis ten, co ma byt videt.
To MZetko : Ano, v tomto případě určitě.
IPconfig napsal:
Bohužel nikdy nevím, který bude zrovna vidět
Eh? To je jako říci: "Vytvořil jsem program, který někdy něco dělá, ale ještě se mi nepodařilo zjistit co."
IPconfig, nechceš konečně pořádně vysvětlit funkci svého programu? To jako někdo zmáčkne tlačítko a náhodně se objeví 1 z 20-ti formulářů, nebo jak? Pokud nedokážeš formulovat svůj problém, nikdo nedokáže formulovat odpověď...
Buď im daj nejaké zmysluplné názvy alebo použi vlastnosť Tag. Daj si tam napr čísla (alebo nejaký iný identifikátor) a potom pri kliknutí na tlačítko prechádzaj vo foreach controls parentu týchto panelov.
if (!(ctrl is Panel))
{
continue;
}
if (ctrl.Tag == identifikatorHladanehoPanelu)
ctrl.Visible = true;
else
ctrl.Visible = false;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Www.moje_domena.cz/neco - hledani vyrazu neco v MySQL — založil mr.M
Neco s polem — založil Hlavinka
Udělej něco po čase — založil Jakub Vojáček
Problem s neco.get lekce 12 — založil petrs21
Moderátoři diskuze