Zdravim mam taky mensi problem. Mam textbox do ktoreho si zapisujem obsah retazca ktory je kazdy chvilu aktualizovany teda meneny a ja potrebujem to dostat do druheho formu aby som vedel analizovat konkretne data ktore pridu v isty okamih ..... ci potrebujem aby sa mi menila tak ta premenna teda string aj v druhom forme kde to budem analyzovat. Dakujem za vsetky rady
Fórum › .NET
Premenna medzi formami
![](img/forum_vlakno_help_vyreseno.png)
Vytvoř si tohle a pak používej ve formu 1
Property.value = TextBox1.Text;
a ve formu 2
TextBox2.Text = Property.value;
Takhle by to šlo taky řešit ;)
public static class Property
{
public static string value = "";
}
#5 Mutagen
Ale toto co si mi ty napisal tak to je to ze si vytvorim triedu a potom a potom si vo forme jedna ukladam obsah textboxu do tej premennej a vo forme dva si to ukaldam do druheho textboxu ..... ale to mi moc nepomoze pretoze ja potrebujem obsah textboxu z formu jedna (ktory sa meni kazdu sekundu pretoze su to vycitavane data pomocou protokolu UDP) a potrebujem ich rovno do formu dva kde ich cchem analyzovat
Ahoj,
zpracovávat logiku aplikace ve třídě Form je dosti podivné a určitě bych to nedoporučil. Podle popisu bych udělal nejspíš následující.
Mít třídu, která zpracovává a zachytává komunikaci přes UDP. Tato třída bude publikovat událost, na kterou se přihlásí tvůj Form1 a pak další třída. Form1 bude hodnoty zobrazovat, ta druhá třída pak bude získaná data zpracovávat.
Pěkný den,
Zmíněná řešení jsou nevhodná. Jelikož tato proměnná očividně není součástí žádného formuláře. Do logiky necpi grafiku a naopak. Takže oba formuláře spravuj z metody Main. Třída s Main by měla být jediná zaujatá - vše ostatní by mělo dodržovat OOP (hlavně být univerzální). Postupuj pomocí vlastnosti - kde v části set jednoduše zavoláš Action<string>...
#9 Matěj Andrle
Ahoj,
volat ve vlastnostech ještě další logiku, obzvláště přes Action<T> není doporučované řešení. Provedení set/get by mělo být co nejrychlejší a nemělo by v sobě skrývat další logiku.
Docela by mě zajímalo, co je na mém řešení nevhodné.
Pěkný den,
Ve chvíli, kdy chci k jedné proměnné přistupovat z více stran, je zbytečné brát jí do dalších parametrů. Ona sama stojí v třídě Main. A parametrizuje 2 formuláře... (Zaujatost zůstane v Main.) Tvé řešení by činilo foruláře na sobě závislé - oba by očekávali tu konkrétní proměnnou. A k tvé narážce na rychlost vlastnosti je nesmyslné. Jaký je rozdíl mezi tím, když ve vlastnosti zavolám logiku a mezi tím, když ji zavolám po nastavení nové hodnoty vlastnosti? Pouze ten, že by se nijak nedalo spustit logiku v části set. A to je kravina. Koukni se do .NET Assembly/IL uvidíš sám, kolik logiky se cpe do get/set. Jinak by ta vlastnost k ničemu nebyla. Jde tu právě o kontrolu měnení hodnot proměnných... (K čemu by byla abstraktní vlastnost?) Proměnná jako taková nemá událost pro změnu - tak jak by jsi to jinak chtěl řešit? V cyklu kontrolovat hodnoty - to bude určitě lepší...
Ahoj,
vůbec netuším, jak by si zaregistrování odběru události na nějaké třetí instanci třídy mohlo způsobit, že dva formuláře budou na sobě závislé.
Ta má narážka je oprávněná, setter má proběhnout co nejrychleji a docela rád bych viděl ty třídy v BCL, které obsahují nějakou složitější logiku. Ostatně poslední dobou dochází spíše k tomu, že třídy se dělají imutabilní. Pro zpracování logiky tady jsou metody a funkce, u kterých se očekává, že mohou/mají vykonávat nějakou činnost, která bude měnit stav objektu, ne jen nastavovat nějakou jeho vlastnost.
Pro evidování změny hodnoty vlastnosti je tady interface INotifyPropertyChanged a ten je použit pro specifický případ bindingu vlastností na UI prvky. Jinak snad není třeba hodnoty vlastností kontrolovat při změně samotné vlastnosti. To se bude nejspíše dít externě pomocí nějakého validátoru v okamžiku, kdy to bude třeba pro zajištění možnosti odkontrolovat správný stav objektu.
Pěkný den,
![](img/forum_nove_psp_new.png)
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
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Z formulára premenná — založil Black.Shadow
Prazdna premenna — založil normi
Premenna a delegat — založil Tayson
Globalna premenna — založil Grungy
Premenná bez obsahu — založil Onsi
Moderátoři diskuze