Archief - [prog]-[c#] communicatie tussen 2 form's

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Irtimid2001

Legacy Member
hallo, ik heb dus een klein probleempje met c#.
Ik ben dus bezig aan een programma (voor mijn eindwerk) dat oa. een usb-device moet detecteren, en eens gedetecteerd moet hij bestanden synchronizeren op datum (oud me nieuw vervangen dus). Nu, heb'k al iets dat een usb-device herkent als't ingestoken wordt en de driveletter teruggeeft.
Maar nu zit 'k vast aan iets stom feitelijk, als er dus een usb-device geconnecteerd wordt, gaat de eerste form (klein vensterke dat geminimalizeerd kan worden naar systemtray enzo) zowiezo invisible worden (geminimaliseerd dus) en wordt er een 2de form opgeroepen.

Proble(e)m(en) nu:
  • Hoe wissel ik een waarde uit tussen 2forms, dus de driveletter haal ik op in die form1, maar 't is form2 da effectief daar iets mee moet doen (in visual basic gaat da kweetni oe gemakkelijk heb'k al gelezen, en in c# vind'k het maar ni)
  • Is da normaal dat ik dat 2de form met Application.run() moet oproepen, als ik dus "form2 f = new form2()" doe en dan "f.Show()" dan loop da venster precies effe vast.

Tnx om te lezen :)
edit: aangepast :)

Emiel

Legacy Member
1) Je kan parameters meegeven met 'new form2(<hier dus>)'
Je moet dan een constructor in je form2-klasse aanmaken met dezelfde type parameters.
In form2 kan je dan ook een get-property voorzien, waarmee een (private) variabele van form2 kan opgehaald worden.
2) Heb je het nu over form1 of form2? En bedoel je dan in de main-methode of ergens in je 1ste form (waar je form2 aanroept)?

Irtimid2001

Legacy Member
srr, klein foutje in mijn uitleg "form1 f = new form1()" moest "form2 f = new form2()" zijn, sorry.

In form1 is er dus een classe waarbij waargenomen wordt wanneer er een usb-device aangesloten word. In die klasse wil die "form2 f = new form2()" en die "f.Show()" niet deftig lukken (als ik form2 zo aanroep dan roept hij die aan en blijft hij even (10sec ofzo) hangen).
Application.run() lukt dan wel.

Bedankt voor te antwoorden, ik ga het morgen eens proberen (al teveel c# gezien vandaag :) )

Irtimid2001

Legacy Member
kheb de 2 problemen kunnen oplossen, moest iemand hetzelfde probleem tegenkomen als mij :)
  • Form1:
    Alles internal of public declareren, de code om Form2 op te roepen:
    Code:
    Application.Run(new Deamon.Form2(this));
  • Form2:
    Code:
    //globaal declareren
    private Form fo;
    
    //initializatie
    public Form2(Form f)
    {
     this.fo=f;
     InitializeComponent();
    }
    
    //aanroep variabele Form1
    Form1 p=(Form1)this.fo;
    p.variabele;
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan