Ahoj, mám menší problém. Snažím se programovat takovou malou bojovou hru. Při zapnutí aplikace si hráč vybere zbraň (každá má jiné atributy, jako útok, obrana, atd.). Po potvrzení výběru zbraně se vytvoří objekt hrac1, který má atributy hrac1.zivoty, hrac1.utok a hrac1.obrana, které jsou danné na základě výběru zbraně. Po vytvoření tohoto objektu se zavře okno na výběr zbraně (Form1) a otevře se okno nové, s vlastní hrou (Form2).
Samozřejmě ve Form2 potřebuji pracovat s objektem hrac1, ktery jsem si vytvoril ve Form1. Při zavření Form1 ale tento objekt zmizí. Jak mám udělat, aby se objekt zachoval v průběhu celého programu? Díky.
Můj kód:
Vytvoření hráče:
private void button1_Click(object sender, EventArgs e)
{
Hrac hrac1 = new Hrac(0, 0, 0);
if (z1.Checked == true)
{ hrac1.zivoty = 120;
hrac1.utok = 20;
hrac1.obrana = 20;
Form2 vytvor = new Form2();
vytvor.Show();
}
...............................
a odsud pak potřebuju hrac1 přesunout do Form2.
C# jak předávat objekty mezi dvěma windows forms?
- muliku
- Začátečník

- Registrován: 05. čer 2009
C# jak předávat objekty mezi dvěma windows forms?
Central Processing Unit: Phenom II x4 965 BE Cooler: Scythe Ninja 3 Mother Board: Gigabyte AMD 890G Random Acces Memory: 2x2 Gb DDR III 1600MHz Kingston Graphic Processing Unit: nVidia GeForce GTX660 2Gb Power Suply Unit: Seasonic M12II-620 - 620W Hard Disk Drives: OCZ Agility 3 120GB, Seagate 1TB, Samsung F3 1Tb
- marek16
- Začátečník

- Registrován: 22. čer 2006
- Bydliště: Brno
Re: C# jak předávat objekty mezi dvěma windows forms?
jednoduše, předej ho tomu druhýmu v konstruktoru:
class Form2
{
private Hrac Hrac;
public Form2(Hrac hrac)
{
this.Hrac = hrac;
}
}
a v prvním:
Form2 form = new Form2(hrac);
Další alternativa je udělat si public field/property a po vytvoreni toho druhyho formu ji jenom nastavit. (WF designer má tuším problém pokud nenajde bezparametrickej konstruktor formuláře, a jakmile uděláš parametrickej, ten bez už se automaticky negeneruje)
class Form2
{
private Hrac Hrac;
public Form2(Hrac hrac)
{
this.Hrac = hrac;
}
}
a v prvním:
Form2 form = new Form2(hrac);
Další alternativa je udělat si public field/property a po vytvoreni toho druhyho formu ji jenom nastavit. (WF designer má tuším problém pokud nenajde bezparametrickej konstruktor formuláře, a jakmile uděláš parametrickej, ten bez už se automaticky negeneruje)
Ryzen 9800X3D | RTX 5080 16GB | 64GB DDR5 6000 CL30 | Gigabyte B650 Aero G | Samsung 990 PRO 2TB | LG BX 4K
Quis custodiet ipsos custodes?
Quis custodiet ipsos custodes?
- muliku
- Začátečník

- Registrován: 05. čer 2009
Re: C# jak předávat objekty mezi dvěma windows forms?
Jééé já jsem hlupák
tohle jsem právě zkoušel, ale nešlo to. Problém byl v tom, že class Hrac nebyla public
Central Processing Unit: Phenom II x4 965 BE Cooler: Scythe Ninja 3 Mother Board: Gigabyte AMD 890G Random Acces Memory: 2x2 Gb DDR III 1600MHz Kingston Graphic Processing Unit: nVidia GeForce GTX660 2Gb Power Suply Unit: Seasonic M12II-620 - 620W Hard Disk Drives: OCZ Agility 3 120GB, Seagate 1TB, Samsung F3 1Tb
- marek16
- Začátečník

- Registrován: 22. čer 2006
- Bydliště: Brno
Re: C# jak předávat objekty mezi dvěma windows forms?
jinak taky jsem zkoušel psát nějakou hru ve winforms, ale ve finále je s tím strašlivá drbačka úplně zbytečně, mrkni na XNA framework, dost věcí to usnadňuje
(pozor, nevýhoda je, že potřebuje Visual studio 10, nebo nainstalovanou desítku a pak se projekty otevřou i ve 12ce tuším, víc na stack overflow/googlu)
Ryzen 9800X3D | RTX 5080 16GB | 64GB DDR5 6000 CL30 | Gigabyte B650 Aero G | Samsung 990 PRO 2TB | LG BX 4K
Quis custodiet ipsos custodes?
Quis custodiet ipsos custodes?
- muliku
- Začátečník

- Registrován: 05. čer 2009
Re: C# jak předávat objekty mezi dvěma windows forms?
Díky za tipy, ale já tohle nedělám pro vlastní potěchu, je to semestrálka do školy.
Central Processing Unit: Phenom II x4 965 BE Cooler: Scythe Ninja 3 Mother Board: Gigabyte AMD 890G Random Acces Memory: 2x2 Gb DDR III 1600MHz Kingston Graphic Processing Unit: nVidia GeForce GTX660 2Gb Power Suply Unit: Seasonic M12II-620 - 620W Hard Disk Drives: OCZ Agility 3 120GB, Seagate 1TB, Samsung F3 1Tb
- xxar3s
- Nováček

-
- Registrován: 09. črc 2008
Re: C# jak předávat objekty mezi dvěma windows forms?
Cez konstruktor, alebo cez property, ale ak nechces riesit zavislosti pouzi IoC kontainer. Sice ti to da na zaciatku trochu prace, ale potom sa uz nemusit o nic starat. Kontainer urobi vsetko za teba.