Stránka 1 z 1

C# jak předávat objekty mezi dvěma windows forms?

Napsal: sob 1. úno 2014, 12:39
od muliku
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.

Re: C# jak předávat objekty mezi dvěma windows forms?

Napsal: sob 1. úno 2014, 13:08
od marek16
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)

Re: C# jak předávat objekty mezi dvěma windows forms?

Napsal: sob 1. úno 2014, 13:11
od muliku
Jééé já jsem hlupák :D tohle jsem právě zkoušel, ale nešlo to. Problém byl v tom, že class Hrac nebyla public

Re: C# jak předávat objekty mezi dvěma windows forms?

Napsal: sob 1. úno 2014, 13:20
od marek16
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)

Re: C# jak předávat objekty mezi dvěma windows forms?

Napsal: sob 1. úno 2014, 13:25
od muliku
Díky za tipy, ale já tohle nedělám pro vlastní potěchu, je to semestrálka do školy.

Re: C# jak předávat objekty mezi dvěma windows forms?

Napsal: ned 2. úno 2014, 22:12
od xxar3s
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.