Přenášení proměnné mezi Form2 a Form1 – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přenášení proměnné mezi Form2 a Form1 – .NET – Fórum – Programujte.comPřenášení proměnné mezi Form2 a Form1 – .NET – Fórum – Programujte.com

 

Michal Š.
~ Anonymní uživatel
24 příspěvků
21. 11. 2010   #1
-
0
-

Ahoj potřebuji přenést proměnnou mezi Form2 a Form1 a mám následující kód

ve Form1:



public Form1()
{
InitializeComponent();
}Form Form2 = new Form2();

int l1r, l2r, l3r;
.
.
.
.
private void Form1_Load(object sender, EventArgs e)
{

Form2.ShowDialog(this);
Form2 obj = new Form2();
int i = obj.x2;

penezenka = i;

label10.Text = Convert.ToString(penezenka);
}


a toto ve form2


public Form2()
{
InitializeComponent();
}
public int x2 = 0;
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();

int _x = Convert.ToInt32(textBox1.Text);

x2 = _x;

}


a stále nevím jak dostat proměnou x2 do penezenka, což je proměnná ve Form1.. vždy se to tam při zavření toho dialogu nějak "ztratí"... Pomůžete mi prosím?

Nahlásit jako SPAM
IP: 88.100.174.–
zdenda
~ Anonymní uživatel
257 příspěvků
22. 11. 2010   #2
-
0
-

Zobrazuješ Form2 a hodnotu čteš z obj. (A proč při clicku ve form2 vytváříš form1 ?)

public class MainForm : Form

{
...
void Button_Click(Object Sender, EventArgs e)
{
DialogForm dlg = new DialogForm();
if (dlg.ShowDialog() == DialogResult.OK)
blabla = dlg.hodnota;
dlg.Dispose();
}
}

public class DialogForm : Form
{
public int hodnota;
...
void OK_Click(Object Sender, EventArgs e)
{
hodnota = Convert.ToInt32(textBox.Text);
DialogResult = DialogResult.OK;
Close();
}
}

Nahlásit jako SPAM
IP: 213.211.51.–
CZechBoY+4
Věrný člen
22. 11. 2010   #3
-
0
-

udělej si tam globální třídu, tohle používám a je to fakt supr věcička, můžeš tam mít proměnných kolik chceš...
přidáš třídu(Class)
a do namespacu(nějakýho) dáš
public static class Globalni
{
public static string uzivatel="programujte.com;
}
pak v nějakým formu(buď dáš na začátek using (název toho namespacu); ) nebo dáš nazev_namespacu.Globalni.uzivatel to ti vypíše(můžeš i zapisovat) aktuálního uživatele(nebo to je fuk co tam uložíš, na názvu tý proměnný taky nesejde :D)

Nahlásit jako SPAM
IP: 213.192.10.–
Michal Š.
~ Anonymní uživatel
24 příspěvků
22. 11. 2010   #4
-
0
-

To CZechBoY : smekám a díky moc... :)

Nahlásit jako SPAM
IP: 88.100.174.–
liborb
~ Redaktor
+18
Guru
22. 11. 2010   #5
-
0
-

To Michal Š. : Přidám poznámku :) ... hodnota proměnné se ti "ztrácí", protože vytváříš novou instanci, která má svojí vlastní (instanční) sadu proměnných. Tohle by si měl pochopit a pak by ses nenechal "nutit" řešit takovou lapálii globální proměnou. Je hodně způsobů, jak to řešit: předat referenci na form, řešení ala zdenda, tj. výsledek do nějaké veřejné dostupné proměnné ... a jedno z dalších možných řešení je přes globální proměnnou, které je nejméně šťastné, protože je hodně svazující. Samozřejmě ... pro triviální programy určitě super, ale jedná se IMHO o špatný návyk.

Nahlásit jako SPAM
IP: 195.189.142.–
kdovi
~ Anonymní uživatel
1 příspěvek
22. 11. 2010   #6
-
0
-

taky sem pro predani reference, nejmene svazujici reseni jak rika liborb :)

Nahlásit jako SPAM
IP: 89.103.131.–
zdenda
~ Anonymní uživatel
257 příspěvků
23. 11. 2010   #7
-
0
-

Řešení ala zdenda, je řešení ala Michal, jen jsem opravil jeho pokus tak, aby fungoval. Nicméně i to je lepší než reference na form ;) A globální data, jako většinu nápadů toho blázna, samozřejmě vůbec nemá cenu řešit.

Nahlásit jako SPAM
IP: 213.211.51.–
CZechBoY+4
Věrný člen
25. 11. 2010   #8
-
0
-

nechápu proč je svazující, já ho používám a je to skvělá věc, jak teda definuju globální proměnnou pro 10 formů?

Nahlásit jako SPAM
IP: 213.192.10.–
liborb
~ Redaktor
+18
Guru
25. 11. 2010   #9
-
0
-

Otázka je, jestli potřebuješ globální proměnnou. Ty mají svůj význam a oblast využití (např. počítadlo vytvořených instancí dané třídy ani jinak neudělaš). Řekněme, že děláš program na zobrazení grafů. Nemáš omezení na počet zobrazených signálů. Vytvoříš form pro editaci vlastností signálu, ve kterém půjde otevřít další s detaily atd. Jeden form třeba pro 30 různých signálů, takže první problém - v globálních datech to musíš nějak pošefovat (třeba index právě editovaného signálu). Pak přijde požadavek na možnost editace vlastností více signálů najednou (více nemodálních formů) a řešíš další problém a omezení.

Ty možná směřuješ k něčemu jako je architektura dokument-pohled, kde data jsou jedny a zobrazují se ve více oknech. Ovšem ani zde nejsou globální :).

Nahlásit jako SPAM
IP: 195.189.142.–
PeterM0
Newbie
3. 12. 2010   #10
-
0
-

Osobne som tiez za predanie referencie

Nahlásit jako SPAM
IP: 147.232.178.–
CZechBoY+4
Věrný člen
4. 12. 2010   #11
-
0
-

jak by teda bylo řešení pro přenášení proměnných o šířce a výšce(Sirka a Vyska) po formech?

Nahlásit jako SPAM
IP: 213.192.10.–
liborb
~ Redaktor
+18
Guru
4. 12. 2010   #12
-
0
-

Každé řešení má svoje výhody. Kde se plní Šířka a Výška? A kde všude se používá?

Nahlásit jako SPAM
IP: 91.203.96.–
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, 35 hostů

 

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