C# prosljeđivanje podataka između formi

poruka: 21
|
čitano: 4.590
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
C# prosljeđivanje podataka

Imam pitanje, u C# bi trebao proslijediti parametar (URL media filea) iz Forme2 u Formu1 (gdje se nalazi WindowsMediaPlayer kontrola), ali bez da moram ponovno pozivati Formu1 pomocu form1.show() (bar je tako bilo u primjerima na netu), probao sam na sve moguće načine ali nikako ne radi, pa bi trebao pomoc kako to napraviti.

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka

pa ja sam to rješio prosljeđivanjem parametara pomoću static void metode koja koristi out tip varijable, pa samo gdje god je trebam, pozovem metodu i varijablu na koju želim da mi se ta vrijednost doda

 

primjer onoga što ja mislim

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
15 godina
offline
Re: C# prosljeđivanje podataka

Ma ne radi mi ni to, imam na Form1 wmp kontrolu i ona bi trebala dobiti URL sa Forme2 (tocnije sa treeViewa1, ovisno o oznacenom indexu) ali to nikako nejde.

14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka

da pitam... jesi probao izvući taj url iz samog tree viewa u istoj formi? probaj napravit nesto tipa string a = treeView1.SelectedNode; pa onda izvuc van tu varijablu a.

nisam nikad izvlacio podatke iz treeviewa, pa ovo samo nagađam

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
15 godina
offline
Re: C# prosljeđivanje podataka

Da, jesam, na formi1 na play buttonu sam stavio ovako:

 

Form2 form2 = new Form2();

wmp.URL = form2.fileNames[form2.treeView1.SelectedNode.Index] // FileNames je List gdje su spremljeni svi URL-ovi do fileova

 

ali ne radi, baci mi poruku "Object reference not set to an instance of an object."

14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka

mislim da ovo odgovara tvom pitanju, reci ak nije pa bumo kopali dalje =)

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
15 godina
offline
Re: C# prosljeđivanje podataka

Ma sve zivo sam sprekopal i jos uvijek nije radilo, sve zive primjere s neta i stalno ne radi.

14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka

joj ma nemam sad volje, imam nekih drugih obaveza koje moram rjesit do uvecer...

evo ti par stvari koje sam iskopao,

link1 

link2 

link3 

link4

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
Poruka je uređivana zadnji put sub 2.7.2011 12:27 (p4c1j3nt).
16 godina
neaktivan
offline
C# prosljeđivanje podataka

Ne moraš direktno proslijediti. Možeš imati statičnu klasu, odvojenu od tvojih formi, koja će držati tu varijablu. Znači tamo gdje bi proslijedio, samo napraviš tipa:

 

BackgroundHandler.tajURL = izvorURLa(); 

 

Ovako ćeš sigurno imati nešto u toj varijabli u statičnoj klasi. Ovo baš nije OOP pristup, ali radi.

 

Drugačije, možeš prvo provjeriti ti je druga forma uopće instancirana. Npr., uzmimo za primjer da imaš Form1 koja se prva pojavljuje, i Form2, ta forma kojoj želiš proslijediti varijablu. U Form1 imaš objekt form2 klase Form2. Sad, u Form2 napraviš funkciju koja prima jedan parametar (taj URL koji ti treba), smjestiš ga gdje već trebaš, i u toj funkciji pozoveš Show(). Tako bi trebalo raditi. Npr.

 

Form1.cs

...

Form2 form2;

...

private void PokreniFormu2()

{

     form2.ShowWithParametar(url);

}

....

 

Form2.cs

...

public void ShowWithParametar(string setURL)

{

     url = setURL;

     Show();

}

...

 
2 0 hvala 2
14 godina
neaktivan
offline
C# prosljeđivanje podataka

to stoji, ali on prvo pokrene formu1, pa formu2, pa iz forme 2 mora vraćati u formu 1, što baš neće samo tak raditi kak si stavio u primjer

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
 
0 0 hvala 0
16 godina
neaktivan
offline
Re: C# prosljeđivanje podataka
p4c1j3nt kaže...

to stoji, ali on prvo pokrene formu1, pa formu2, pa iz forme 2 mora vraćati u formu 1, što baš neće samo tak raditi kak si stavio u primjer

Jesu li obe forme istovremeno aktivne? Svejedno mu je zapravo, ako ima statičnu klasu, 2. forma će uzimati iz te statične klase podatke, a 1. forma će u statičnu klasu postavljati podatke. Forma 2 će dobiti uvijek zadnje što je u Formi 1 poslano.

14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka
DragonSoul kaže...
p4c1j3nt kaže...

to stoji, ali on prvo pokrene formu1, pa formu2, pa iz forme 2 mora vraćati u formu 1, što baš neće samo tak raditi kak si stavio u primjer

Jesu li obe forme istovremeno aktivne? Svejedno mu je zapravo, ako ima statičnu klasu, 2. forma će uzimati iz te statične klase podatke, a 1. forma će u statičnu klasu postavljati podatke. Forma 2 će dobiti uvijek zadnje što je u Formi 1 poslano.

naletio sam na lagani problem pozivanja vrijednosti iz statične klase forme 1, jer nemogu pozvat isti objekt u obje forme, svaka forma ima svoje objekte neovisno što je ista klasa

'butelja kvalitetnog bijelog vina, veliki čevapi s lukom, dobra mjuza... Zar život može biti bolji?' počivao u miru, EnlightenedPhoenix
14 godina
neaktivan
offline
C# prosljeđivanje podataka

Delegati i Eventi. Točka. 

 

Budući da proslijeđuješ custom podatke, napraviš klasu:

 

public class MojArgs:EventArgs

{

    ...

   šta ti već treba

}

 

u toj formi iz koje proslijeđuješ podatke napravi

 

public delegate void (ili koji god ti je tip f-ja koja treba obraditi događaj) imeDelegata (object o, MojArgs e);

public event imeDelegata imeDogadjaja;

 

u formi u kojoj očekuješ podatke pretplati se na ovaj događaj iznad

 

imeDogadjaja mojDogadjaj += new From2.imeDelegata (naDogadjaj);

 

i napravi metodu koja obrađuje događaj:

 

public/private (šta te volja) povratni_tip_delegata naDogadjaj (object o, MojArgs e)

{

}

 

e sada samo u formi iz koje trebaš proslijediti podatke trebaš opalit događaj kada npr. klikneš na neko dugme, šta ti god treba..

Unutar tog handlera napravi instancu klase tvojih argumenata i opali događaj sa:

 

if (imeDogadjaja != null)

{

    imeDogadjaja(pošiljatelj, argumenti);

}

 

Ovo je ugrubo, ali nadam se da si shvatio bit.

 
0 0 hvala 0
14 godina
neaktivan
offline
C# prosljeđivanje podataka

Imaš onu najprimitivniju "zdravoseljačku" metodu. Link spremi u tekstualnu datoteku, pa onda iz tekstualne datoteke procitas s druge forme.

Ili kompliciranije i elegantnije rješenje: u klasi forme1 dodaj statički atribut tipa string, npr.

static string url = "";

 

Onda na drugoj formi izradiš objekt klase form1

Form1 forma1 = new Form1;

i postaviš atribut url na željenu vrijednost

forma1.url = "www.ffff.com";

 

Statički atributi su isti kod svih insanciranih objekata iste klase.

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: C# prosljeđivanje podataka
p4c1j3nt kaže...
DragonSoul kaže...
p4c1j3nt kaže...

to stoji, ali on prvo pokrene formu1, pa formu2, pa iz forme 2 mora vraćati u formu 1, što baš neće samo tak raditi kak si stavio u primjer

Jesu li obe forme istovremeno aktivne? Svejedno mu je zapravo, ako ima statičnu klasu, 2. forma će uzimati iz te statične klase podatke, a 1. forma će u statičnu klasu postavljati podatke. Forma 2 će dobiti uvijek zadnje što je u Formi 1 poslano.

naletio sam na lagani problem pozivanja vrijednosti iz statične klase forme 1, jer nemogu pozvat isti objekt u obje forme, svaka forma ima svoje objekte neovisno što je ista klasa

Ne znam što si radio, a da ne gubim previše vremena na objašnjavanje, evo primjer:

http://dl.dropbox.com/u/579001/StaticPrimjer.zip

 

Ako ti nešto nije jasno, pitaj.

17 godina
offline
C# prosljeđivanje podataka

Imas vise nacina. Najlaksi je proslijedjivanje putem konstruktora. Da ne meljem dalje pogledaj ovo:

 

http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx

Do kada vi to meni mislite tolerirat?
 
1 0 hvala 0
14 godina
neaktivan
offline
Re: C# prosljeđivanje podataka
tnakir kaže...

Imas vise nacina. Najlaksi je proslijedjivanje putem konstruktora. Da ne meljem dalje pogledaj ovo:

 

http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx

Ovo je prva stvar koju sam probao uraditit kada sam počinjao programirati GUI aplikacije u C#-u. heheh Ostatak proceduralnog načina razmišljanja iz c-a. Jednostavno da, ali ne baš spretno i fleksibilno rješenje. 

Poruka je uređivana zadnji put sub 2.7.2011 23:42 (BassMan).
17 godina
offline
Re: C# prosljeđivanje podataka
BassMan kaže...
tnakir kaže...

Imas vise nacina. Najlaksi je proslijedjivanje putem konstruktora. Da ne meljem dalje pogledaj ovo:

 

http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx

Ovo je prva stvar koju sam probao uraditit kada sam počinjao programirati GUI aplikacije u C#-u. heheh Ostatak proceduralnog načina razmišljanja iz c-a. Jednostavno da, ali ne baš spretno i fleksibilno rješenje. 

Kao sto rekoh, ima vise nacina, ali ovaj je najlaksi.

Do kada vi to meni mislite tolerirat?
16 godina
protjeran
offline
C# prosljeđivanje podataka između formi

Nova klasa i proces nasljedivanja je jos jedna od nacina kako se moze rijesiti stvar ... iako se slazem sa vecinom savjeta ovdje... 

 
0 0 hvala 0
15 godina
neaktivan
offline
C# prosljeđivanje podataka između formi

Probaj koristit public static tipove podataka.

 

EDIT:

točnije doseg .

"I've seen things you people wouldnt believe. Attack ships on fire off the shoulder of Orion. I watched C-beams glitter in the dark near the Tannhauser Gate"
Poruka je uređivana zadnji put pet 29.7.2011 22:02 (woodgamesfx).
 
0 0 hvala 0
17 godina
offline
Re: C# prosljeđivanje podataka između formi
woodgamesfx kaže...

Probaj koristit public static tipove podataka.

 

EDIT:

točnije doseg .

 

To bas i nije best practice rijesenje. Kako je basman rekao, kad bi isao radit po zanatu tu su delegati
Ovaj forumaš je tolerantan prema osobama svih nacionalnosti, rasa i spolnog opredjeljenja te smatra da svaka osoba ima pravo biti slobodna od ugnjetavanja zbog svojih liberalnih mišljenja
Poruka je uređivana zadnji put pet 29.7.2011 23:44 (tnakir).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice