[C# / Windows Forms] Label in parent frame aanpassen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sspruijt
  • Registratie: Mei 2007
  • Laatst online: 15:11
Goeiemorgen.

Ik heb een applicatie met een MDI hoofdvenster en waarin meerdere vensters geopend kunnen worden. Ik heb in het hoofdframe een aantal labels die soms aangepast moeten worden. Bijvoorbeeld kan er in een subframe wat worden geselecteerd, en dit moet dan te zien zijn in het hoofdframe. Ik heb alleen geen idee hoe ik een label in de parent kan aanpassen. Alle oplossingen die op internet te vinden zijn gaan er vanuit dat het aan te passen form nog niet bestaat, en je zo de waarde van het label mee kan geven in de constructor. Ik zit alleen met het probleem dat het frame al bestaat waarin het aangepast moet worden. Iemand enig idee hoe ik dit aan kan passen? Ik heb al geprobeerd om het label public te maken en deze code uit te voeren:

C#:
1
this.Parent.Controls["label"].Text = "blaat";


Dit gaf echter alleen NullPointers.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Sspruijt schreef op vrijdag 12 juni 2009 @ 10:10:
Goeiemorgen.

Ik heb een applicatie met een MDI hoofdvenster en waarin meerdere vensters geopend kunnen worden. Ik heb in het hoofdframe een aantal labels die soms aangepast moeten worden. Bijvoorbeeld kan er in een subframe wat worden geselecteerd, en dit moet dan te zien zijn in het hoofdframe. Ik heb alleen geen idee hoe ik een label in de parent kan aanpassen. Alle oplossingen die op internet te vinden zijn gaan er vanuit dat het aan te passen form nog niet bestaat, en je zo de waarde van het label mee kan geven in de constructor. Ik zit alleen met het probleem dat het frame al bestaat waarin het aangepast moet worden. Iemand enig idee hoe ik dit aan kan passen? Ik heb al geprobeerd om het label public te maken en deze code uit te voeren:

C#:
1
this.Parent.Controls["label"].Text = "blaat";


Dit gaf echter alleen NullPointers.

Alvast bedankt.
Ik kan het hier even niet testen maar waarschijnlijk kan je de Parent wel casten naar de hoofdframe, als je daar de label op public (Kan met visibility property) zet kan je er buiten uit ook bij komen, of je maakt gewoon in de parent even een public functie waar je het label mee aan kan passen.

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

Verwijderd

je kan volgens mij de MDIParent gebruiken en daar de controls in aanpassen. klein voorbeeldje

in MDI

C#:
1
2
3
4
public void pasinlabelaan(string tekst)
{
     label.Text = tekst;
}


en dan vanuit je Child form.

C#:
1
     ((MDIForm1)this.mdiParent).pasinlabelaan("test");


Je kan ook zoals gezegd je label public maken en dan heb je
C#:
1
      ((MDIForm1)this.mdiParent).Label1.Text = "test";

Acties:
  • 0 Henk 'm!

  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 06-07 20:28

DarkSilence

W3designer.nl

Is het niet verstandiger om dit op te lossen met een event? Want nu moet je child control weten hoe zijn parent eruit ziet. Dit is niet handig als je de control e.v.t. op meerdere plekken wilt gaan gebruiken.

[ Voor 99% gewijzigd door DarkSilence op 12-06-2009 14:23 ]

W3designer.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Inderdaad. Gewoon een event raisen en het MDIForm dat event laten vangen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij