Diskuze: C# - dědění z Form1
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jaký důvod máš dědit z Form 1 ?
Už jenom to, že si nastavil těm labelům public je blbost. Proč zveřejňuješ celý label ? Když ti stačí jeho text ?
Pak to, že dědíš z Formu neznamená, že je to taky ta instance ... Vytváříš sice celý Form1 jakoby znova, ale je tam všechno uplně jinak. Takže jestli chceš udělat to co děláš teď, tak si udělej vlastnosti na ty texty těch labelů, popřípadě přidej jejich reference skrz ten list (když chceš pracovat s kolekcemi) a tu si až proiteruj a zmeň ty labely.
Je to to samé, jako bys passoval nějaké data z formu1 do formu2, je to úplně ten samý princip, jen tady budeš předávat nějakou kolekci, popřípadě celý odkaz na Form1 (toto je ale zbytečné)
důvod je takový, že jsem chtěl zkusit, jestli potomek (Class1) může pracovat s objekty rodiče (Form1)
To že stačí z celého labelu jen text je samozřejmě pravda - v tomto jednoduchém případě - co když ale budu chtít měnit víc věcí (třeba visible,back color atd..).
Mimochodem jak jsi došel na to, že jsou labely public?
Ve Form1 jsou protected kvůli dědění a jejich kolekce v Class1 je
private.
Veřejná je jen metoda, která má přepsat jejich texty.
Já měl za to, že labelList.Add(label1);vytvoří referenci na label1, ale takhle to vypadá, že to je kopie label1 ve které se text změní ale v původní - fyzicky na formuláři už ne.
Byl to ale jenom test - nejjednodušší je samozřejmě metody pro změny vlastností umístit do stejné třídy.
Jinak omluvte pokud napíšu nějaký nesmysl - bude to tím, že jsem si některé věci vyložil jinak, než jak je autor tutoriálu zamýšlel.
Zobrazeno 5 zpráv z 5.