Premenna medzi formami – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Premenna medzi formami – .NET – Fórum – Programujte.comPremenna medzi formami – .NET – Fórum – Programujte.com

 

Tayson0
Stálý člen
3. 7. 2013   #1
-
0
-

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

Nahlásit jako SPAM
IP: 85.237.239.–
Tayson0
Stálý člen
3. 7. 2013   #2
-
0
-

#1 Tayson
Alebo mozem aj premennu z formu1 dostat do pridanej Class ?a tam ju analyzovat ?

Nahlásit jako SPAM
IP: 85.237.239.–
Zed_10
Newbie
3. 7. 2013   #3
-
0
-

Ahoj, šlo by to přes property popřípadě ještě vyvolat událost. Nebo jak píšeš hodnotu ukládat do jedné instance přídy, kterou by vyúžívali oba formy. 

Nahlásit jako SPAM
IP: 195.122.223.–
Tayson0
Stálý člen
3. 7. 2013   #4
-
0
-

#3 Zed_1
ale tu premennu uz pouzivam v jednom forme a potrebujem ju do triedy dostat 

Nahlásit jako SPAM
IP: 158.193.105.–
Mutagen
~ Anonymní uživatel
549 příspěvků
4. 7. 2013   #5
-
0
-

 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 = "";
}
Nahlásit jako SPAM
IP: 37.188.235.–
Tayson0
Stálý člen
6. 7. 2013   #6
-
0
-

#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

Nahlásit jako SPAM
IP: 213.81.131.–
liborb
~ Redaktor
+18
Guru
8. 7. 2013   #7
-
0
-

Když neukážeš ani kousek kódu, tak to se to špatně radí ... Jednoduše to udělej tak, že v místě, kde nastavuješ obsah textboxu ve Form1, tak ho rovnou nastav i do textboxu (nebo čehokoliv jiného) ve Form2.

Nahlásit jako SPAM
IP: 188.75.135.–
JardaJirava0
Stálý člen
8. 7. 2013   #8
-
0
-

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,

Nahlásit jako SPAM
IP: 78.3.30.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
9. 7. 2013   #9
-
0
-

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>...

Nahlásit jako SPAM
IP: 78.136.150.–
Tayson0
Stálý člen
9. 7. 2013   #10
-
0
-

#9 Matěj Andrle
No asi to tak bude najlepsie

Nahlásit jako SPAM
IP: 85.237.239.–
JardaJirava0
Stálý člen
9. 7. 2013   #11
-
0
-

#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,

Nahlásit jako SPAM
IP: 78.3.73.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
10. 7. 2013   #12
-
0
-

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ší...

Nahlásit jako SPAM
IP: 78.136.150.–
JardaJirava0
Stálý člen
10. 7. 2013   #13
-
0
-

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,

Nahlásit jako SPAM
IP: 78.1.114.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

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

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý