Ano, New vytvoří nový prvek do proměnné GB, ale pak do této proměnné přiřazujete hodnotu proměnné jiné. Je to stejné, jak když vytvoříte proměnnou a s počáteční hodnotou 5, pak do ní ale přiřadíte 3 a nakonec se divíte, že tam ta 5 není. Rozdíl mezi běžnými proměnnými (typu Integer atd.) a objekty je ten, že když máte a a b typu Integer a uděláte a = b, pak se hodnota a přepíše hodnotou z b, ale když změníte a, s b se nic nestane. Když to ale uděláte s objektem, tak se objekt nezkopíruje z jedné proměnné do druhé, objekt fyzicky existuje jenom jednou a v proměnných jsou na něj vždycky jenom odkazy. Když tedy přiřadíte do a hodnotu b, způsobíte tím, že obě dvě budou odkazovat na stejný objekt. Změníte něco v a a změní se to i v b. Proto daný kód také přesune komponentu z jednoho formuláře do druhého, jedna komponenta nemůže být zároveň v obou najednou. Nejelegantnější by bylo vytvořit si novou třídu, kterou zdědíte od třídy GroupBox a v nějaké vhodné události do komponenty nasypete a nastavíte všechny vlastnosti tak, jak potřebujete. Potom tuto komponentu akorát přidáte na formuláře normálně v návrhovém režimu, jako kdyby to bylo úplně obyčejná komponenta.
|