Toon posts:

[VB.NET] waardes van een andere form?

Pagina: 1
Acties:
  • 246 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
in vb 6.0 kon je gewoon een waarde van een andere form pakken, maar dit lukt me niet in vb.net iemand enig idee hoe ik dit moet doen.

voorbeeld:

in vb 6: text1.text = form2.text1.text

dit lukt niet in vb.net
ook niet als ik een object maak van de tweede form.

Verwijderd

Topicstarter
niemand?? :'(

Verwijderd

Niet zo snel trappen ja :(

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 26-05 16:26

LauPro

Prof Mierenneuke®

Ik ken VB.net nog niet maar ik denk dat je eerst een object moet aanmaken die je naar dat form linkt. Ik zou wel graag VB.net willen btw *D (ik zal is kijken waar het te koop is btw)

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Verwijderd

Topicstarter
Op zondag 28 april 2002 21:21 schreef Yarvieh het volgende:
Niet zo snel trappen ja :(
Hier kom ik eens stuk verder mee. Bedankt
Jij weet tenminste waar je over praat. :+

Verwijderd

Topicstarter
Op zondag 28 april 2002 21:30 schreef LauPro het volgende:
Ik ken VB.net nog niet maar ik denk dat je eerst een object moet aanmaken die je naar dat form linkt. Ik zou wel graag VB.net willen btw *D (ik zal is kijken waar het te koop is btw)
Ja heb ik geprobeerd, maar volgens mij zijn dan alle eigenschappen leeg of zo?
Ik ben hier al een tijd mee aan het worstelen,
dus ik denk dan maar op het forem, misschien dat het hier iemand weet.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op zondag 28 april 2002 21:11 schreef fran_nic het volgende:
niemand?? :'(
<laat>
Hoi,
[topic=392390/1/25]
Policy mbt het omhoogschoppen van threads. Wacht minstens 24 uur voor je je topic omhoog schopt. Doe dit dan ook alleen met een zinnige opmerking en dus niet met "Waarom antwoord er nou niemand" nadat je 5 minuten geen antwoord hebt gehad. Sommigen van ons hebben een leven :+
</laat>
<hr>
Op zondag 28 april 2002 21:31 schreef fran_nic het volgende:
Hier kom ik eens stuk verder mee. Bedankt
Jij weet tenminste waar je over praat. :+
dit soort reply's zijn niet handig tegen degenen die er verstand van hebben. Tis dat Yarvieh niet zo moeilijk is maar niet meer doen.

Doet iets met Cloud (MS/IBM)


Verwijderd

Sample wat info uit textboxje van form2 haalt en in label van formpje 1 zet.

http://yarvje.dyndns.org/~ray/DotNet/Sample.zip

Verwijderd

Topicstarter
Op zondag 28 april 2002 21:40 schreef D2k het volgende:

[..]

<laat>
Hoi,
[topic=392390/1/25]
[..]


</laat>
<hr>
[..]

dit soort reply's zijn niet handig tegen degenen die er verstand van hebben. Tis dat Yarvieh niet zo moeilijk is maar niet meer doen.
Sorry ik wist niet dat dat zo in elkaar zat.
Sorry zal niet meer gebeuren.

Verwijderd

Topicstarter
Op zondag 28 april 2002 21:45 schreef Yarvieh het volgende:
Sample wat info uit textboxje van form2 haalt en in label van formpje 1 zet.

http://yarvje.dyndns.org/~ray/DotNet/Sample.zip
Sorry was een misplaatste opmerking.
In elk geval bedankt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ik vind die oplossing in dat sample niet zo mooi. Je kan met zo'n oplossing die 2de form niet gaan hergebruiken vanop een andere form dan form1.

Daarom zorg ik er altijd voor dat, bij communicatie tsn 2 forms het ene type form niets afweet van het andere type form.

Hoe ik dat doe:

Ik maak gebruik van functie-pointers (delegates in .NET). Ik zal even wat code posten hoe ik het doe in C#:

Stel, je hebt een form frmList en een form frmDetail. Vanuit frmList kan je een frmDetail form openen en op dat frmDetail-scherm geef je gegevens in, die je dan, na een druk op een knop wilt zien in frmList.

Wat je dus nodig hebt, is een delegate. Die definieer ik nu voor het gemak in frmList:
code:
1
2
3
4
5
6
7
8
9
using System;
using System.Windows.Forms;

namespace ListForm
{

public delegate void MyDelegate(object Sender);

...

In het detailscherm (frmDetail) heb ik een instance nodig van die delegate. Dus, daar komt volgende code:
code:
1
2
3
4
5
6
7
8
namespace DetailForm
{

public class TfrmDetail : Form
{
...
internal MyDelegate DoAfterOk;
...

Stel dat er een instance van TfrmDetail geopend wordt vanuit frmList dan komt daar volgende code:
code:
1
2
3
4
5
6
7
8
private void OnOpenButtonClick(object sender, EventArgs e)
{
TfrmDetail frmDet;

frmDet = new TfrmDetail(this);
frmDet.DoAfterOk = new MyDelegate(GeefGegevensDoor);
frmDet.Show();
}

Wat ik hier dus gedaan heb, is aan DoAfterOk (die een instance is van MyDelegate) een functie 'toegekend'. Deze functie moet ik natuurlijk nog uitwerken. Stel dat ik de gegevens die op het detailform staan, in een ListView wil terechtbrengen die zich in TfrmList bevindt. Daartoe moet ik een functie schrijven in TfrmList die aan de signature van de Delegate voldoet. (In dit geval: return-type = void en één parameter van het type object). Deze functie heet dus 'GeefGegevensDoor' (zie hierboven) en hier volgt de uitwerking:
code:
1
2
3
4
5
6
7
8
9
private void GeefGegevensDoor(object Sender)
{
  ListItem NewItem;

  NewItem = new ListItem();
  NewItem.Text = ((TfrmDetail)Sender).TextBox1.Text;

  ListView1.Items.Add(NewItem);
}

Het enige wat nog rest, is om die functie 'GeefGegevensDoor' uit te voeren. Dit moet gebeuren vanop het DetailScherm (TfrmDetail), maar daar kennen we natuurlijk die functie niet. Maar, we hebben ze wel aan de delegate gekoppeld die een member is van TfrmDetail, dus kunnen we die functie op die manier uitvoeren vanuit TfrmDetail:
code:
1
2
3
4
5
6
7
private void OnOkButtonClick(object Sender, EventArgs e)
{
  if (DoAfterOk != null)
  {
    DoAfterOk(this);
  }
}

Zo, ik hoop dat het een beetje verstaanbaar is. Het spreekt ook voor zich dat ik hier enkel de relevante code gepost heb. Ik heb die code hier trouwens uit de losse pols getyped, dus zullen er wel syntax - fouten ed in zitten.

Zo, als dat geen voorgekauwde oplossing is...

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Op zondag 28 april 2002 21:30 schreef LauPro het volgende:
Ik zou wel graag VB.net willen btw *D (ik zal is kijken waar het te koop is btw)
Je kan de .NET SDK gratis downloaden van de Microsoft Site. Als je nog een goed editortje vind, kan je al wat aan de slag met .NET. Verder kan een goed boek ook nog helpen natuurlijk.

https://fgheysels.github.io/


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 26-05 20:20
Om maar eens even een oude koe uit de sloot te halen:

whoami:
Ben bezig met het bestuderen van delegates, dus dank voor dit heldere voorbeeld.

Ik heb uit je voorbeeld de regel:
code:
1
internal MyDelegate DoAfterOk;

moeten vervangen om het werkend te krijgen, door:
code:
1
internal ListForm.MyDelegate DoAfterOk;

Anders krijg ik de melding: The type or namespace name 'MyDelegate' could not be found (are you missing a using directive or an assembly reference?)'

Volkomen logisch uiteraard.

Mijn vraag nu: Je zegt dat je delegates kan gebruiken zodat het ene form niets van het andere form hoeft te weten.
Echter, door mijn aanpassing is TfrmDetail niet meer los te gebruiken van ListForm.
Hoe kan ik nu ervoor zorgen dat de 2 forms wel onafhankelijk van elkaar blijven?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je kan ipv een custom delegate ook een voorgedefinieerde delegate gebruiken van het type EventHandler.
(System.Windows.EventHandler).

Je moet er dan natuurlijk wel voor zorgen dat je event-handler voldoet aan de Eventhandler delegate signature:

code:
1
void blaat( object sender, EventArgs e)

[ Voor 40% gewijzigd door whoami op 17-03-2004 10:28 ]

https://fgheysels.github.io/


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 26-05 20:20
Is het dan niet mogelijk om het op te lossen met je originele voorbeeld?

Kan je anders eens uitleggen hoe ik het voorbeeld moet aanpassen voor het gebruik van een event delegate? Heb het eea erover gelezen maar het is alsnog abracadabra voor me.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Jabbah schreef op 17 maart 2004 @ 10:58:
Is het dan niet mogelijk om het op te lossen met je originele voorbeeld?
Toch wel, als je MyDelegate in dezelfde namespace definieert als al je forms, of als je MyDelegate in een andere namespace definieert die je zowel in je ListForm namespace als in je DetailForm namespace used.
Kan je anders eens uitleggen hoe ik het voorbeeld moet aanpassen voor het gebruik van een event delegate? Heb het eea erover gelezen maar het is alsnog abracadabra voor me.
Gewoon MyDelegate vervangen door System.EventHandler

https://fgheysels.github.io/

Pagina: 1