[VB.NET] Treeviewnode op ander form verwijderen

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:01

Rhapsody

In Metal We Trust

Topicstarter
hey,

nou ik denk dat de titel al voorzich spreekt.

Heb een MDI applicatie, met op de 'parent' een treeview.
Nu wil ik via een Childform een functie aanroepen die in de parent staat, waardoor een treeviewnode verwijderd word.

Nu heb ik lopen zoeken met google en deze search, en toen kwam ik op de term 'delegates'.
Na nog meer zoekwerk heb ik dus heel wat geprobeerd om daarmee te werken, maar ik stuit tot nog toe op niets.

Kan iemand mij uitleggen hoe ik gebruik moet maken van 'delegates' of (indien dat helemaal niet moet) hoe ik het dan kan oplossen?

ALvast bedankt,

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
Er zijn verschillende manieren om dit op te lossen.

Je kan , in je main-form een public method maken die de node verwijderd. Die method roep je dan aan via je child form. Je child form weet nl. wie z'n owner (jouw main-form dus) is :
code:
1
2
3
4
5
6
private void Button_Click(object sender, EventArgs e)
{

    ((MijnMainForm)this.Owner).DeleteDeGewensteChildNode();

}

C# code

Je kan het ook met delegates oplossen.
Je creeërt een delegate en zorgt ervoor dat je child-form een member heeft van het type v/d delegate.
Je main form heeft een method die de child-node verwijderd. Bij het openen van je child-form, wijs je die method toe aan de delegate van je child form. Als je dan een bepaalde actie doet op je child form, kan je die delegate aanroepen:
Opnieuw C# code
code:
1
public delegate void DoSomeStuff(object sender);

In je child form maak je dan een attribute voor die delegate:
code:
1
public DoSomeStuff  DoIt;


Op je main form open je je client form, en geef je de method die je in de main-form hebt gedefinieerd om de node te verwijderen mee aan de delegate van je child:
code:
1
2
3
4
5
frmChildForm     frmChild;

frmChild = new frmChildForm();
frmChild.DoIt += new DoSomeStuff(DeleteTheNode);
frmChild.Show();


In je child-form heb je dan nog code nodig die de delegate triggert als er bv. op een knop geklikt wordt:
code:
1
2
3
4
5
6
7
private void Button_Click(object sender, System.EventArgs e)
{
   if( DoIt != null )
   {
       DoIt(this);
   }
}


Voor een wat uitgebreider voorbeeld ivm delegates:
[rml]whoami in "[ VB.NET] waardes van een andere form?"[/rml]

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:01

Rhapsody

In Metal We Trust

Topicstarter
Hartstikke bedankt,

heb het aan de gang met die delegates.

Maarre 1 vraagje nog :) waar heb je dit allemaal gelezen?
Ik heb nl. de VB.NET Bible (nederlands van academic service) en daar stond er maar 1 pagina over delegates, niet echt duidelijk dus :)

🇪🇺 pro Europa!


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
Euhm, een boek over C#, MSDN, dingen uitproberen, ervaring uit andere talen, etc....

https://fgheysels.github.io/


Verwijderd

Rhapsody schreef op 11 november 2003 @ 21:57:
Hartstikke bedankt,

heb het aan de gang met die delegates.

Maarre 1 vraagje nog :) waar heb je dit allemaal gelezen?
Ik heb nl. de VB.NET Bible (nederlands van academic service) en daar stond er maar 1 pagina over delegates, niet echt duidelijk dus :)
Als je eenmaal 1 boek hebt gelezen waar iig Methods, Classes (elk boek) word uitgelechtgd. Kijk je de rest zelf zoeken omdat je de gedachte een beetje begint te begrijpen.
de MSDN library helpt je daarbij lekker opweg!

Of je koopt nog een boek die dieper op zaken ingaat! Kijk is op de Microsoft Press site. Daar staan leuke boekies tussen ;)

[ Voor 1% gewijzigd door whoami op 12-11-2003 12:28 ]