[C#] Verander een label in een ander Form

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
:w

Ik heb een hoofdscherm met 4 verschillende knoppen. Ik wil zodra je dus op knop 1, 2, of 3 klikt de tekst van een label veranderd naar A in de tweede, andere form, druk je op de vierde dan word datzelfde label een B. Is dit makkelijk te doen? Ben er mee bezig in Visual Studio met C#!

Heb me tot nu toe duf zitten zoeken maar ik heb nog niet iets gevonden wat werkt...

Iemand een idee? Bedankt vast!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:43

Ventieldopje

I'm not your pal, mate!

Heb je al geprobeerd het label te veranderen in één form? Als dat lukt dan is het veranderen van een element in een ander form ook niet meer zo'n probleem.

Gewoon nog even goed zoeken, logisch nadenken en proberen.

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
Jazeker, toen was het niet zo moeilijk. Onder de click event zetten label1.text =... omdat ik er dan direct bij kon. Nu staatie in een andere en gaat dat niet :o. Ben een behoorlijke beginner hoor dus sorry als ik wat raars zeg!

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 14:52
Je moet dus op een manier een referentie naar het andere form krijgen. Je maakt dit form ergens aan, dus daar kan je beginnen met een referentie van het andere form meegeven.
Of je geeft een referentie mee naar een object waarin de state van de applicatie is bijgehouden. Dan kan je de forms laten luisteren naar events en kan je een event triggeren als de state verandert. Maar naar C# events zou ik pas gaan kijken als je het eerste correct werkend hebt.

Acties:
  • +1 Henk 'm!

  • char3
  • Registratie: December 2011
  • Laatst online: 06-09 17:21
Je kan bij de eigenschappen van een label de 'Modifiers' op public zetten.
vervolgens kan je de eigenschap text wijzigen. bv.
var f = new Form2();
f.Show();
f.label1.text = '' a '';

Wil je dit doen na show(), in een event of functie zal je een globale variabele met de referentie naar het formulier kunnen maken.

Acties:
  • +1 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
Direct de properties van de members van een ander object aanpassen kan een teken zijn dat je ontwerp niet helemaal lekker is. Zie de Law of Demeter

Maak een property in het tweede form die de tekst van dat label voorstelt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
Oke, wat ik nu heb gedaan, om het even te testen, heb ik bij de eerste knop, het click event de volgende code inde eerste form neergezet:

Button btn = sender as Button;
Speel_Lingo__Spelers f = Application.OpenForms.OfType<Speel_Lingo__Spelers>().FirstOrDefault();
if (f != null)
{
if (btn.Name == "B_5")
f.ChangeLabel("Cat");

else if (btn.Name == "B_6")
f.ChangeLabel("Dog");

else if (btn.Name == "B_7")
f.ChangeLabel("Bird");
}

Vervolgens in de tweede, waar de tekst veranderd moet worden:

public void ChangeLabel(string newText)
{
L_Game_desc.Text = newText;
}

Heb dit getest, maar de label tekst veranderd niet :(. Wat doe ik verkeerd?

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 14:52
En heb je al breakpoints gezet op de eerste if statement?

Nog even een tip.
Je kan [code=c#] hier je code[/code] gebruiken voor betere opmaak:
C#:
1
 var i = 0;

Acties:
  • 0 Henk 'm!

  • Don1233
  • Registratie: Juni 2016
  • Laatst online: 27-03-2022
Ja, hij loopt de eerste door, omdat ik uitprobeerde en de eerste knop aanklikte, B_5. Maar de tekst is onveranderd
Pagina: 1