login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Data tussen forms

Offline rredspike1 - 28/04/2012 16:20 (laatste wijziging 28/04/2012 16:21)
Avatar van rredspike1Lid Ik heb een listbox in form2, met een geselecteerde item, deze zet ik om naar een string, maar hoe zorg ik er nu voor dat deze geselecteerde item nu opvraagbaar is in form1

  1. string tekenreeks = lstb_liederen.SelectedItem.ToString();


3 antwoorden

Gesponsorde links
Offline Maarten - 30/04/2012 10:19
Avatar van Maarten Erelid Als de instantie van form2 op dat punt nog bestaat kan je toch een public property maken?

Of via een eigen event handler...
Offline Abbas - 30/04/2012 21:04
Avatar van Abbas Gouden medaille

Crew .NET
Zorg voor een publieke eigenschap van het type String in de eerste Form. Die kan je een waarde geven vanuit je tweede Form nadat een item uit de ListBox gekozen is. In het SelectedIndexChanged-event van de ListBox haal je het item op en stop je het in de publieke eigenschap van de eerste Form. De eerste Form kan je "kennen" vanuit de tweede door de eerste Form als Owner van de tweede Form in te stellen. In het EnabledChanged-event van de eerste Form vang je de wijziging van de property op. Volgende code maakt alles duidelijk:

De public property op class-level:
  1. public String SelectedItem { get; set; }


Het initaliseren van de tweede form (in een of ander event):
  1. Enabled = false;
  2. var f3 = new Form3 { Owner = this };
  3. f3.Show();


Het event van de ListBox in de tweede Form:
  1. private void ListBox1SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3. if(listBox1.SelectedItem != null)
  4. {
  5. if(Owner != null)
  6. {
  7. var owner = (Form1)Owner;
  8. owner.SelectedItem = listBox1.SelectedItem.ToString();
  9. owner.Enabled = true;
  10. Close();
  11. }
  12. }
  13. }


De code van het EnabledChanged-event:
  1. private void Form1EnabledChanged(object sender, EventArgs e)
  2. {
  3. if(Enabled)
  4. MessageBox.Show(SelectedItem);
  5. }


Zoals Maarten al zei is het ook mogelijk om met een EventHandler te werken om de wijziging van de waarde van de property op te vangen. Dit is eigenlijk een betere methode omdat je nu afhangt van de Enabled-property van de eerste Form. Maar dit zou je op weg moeten helpen! ;)
Offline larssy1 - 01/05/2012 11:02 (laatste wijziging 01/05/2012 12:03)
Avatar van larssy1 MySQL beginner Je kunt daarnaast ook naar de singleton methode kijken, komt deels overeen met wat titjes zei.

Hierbij heb je één enkel bestand waarin je je settings bewaard met behulp van de getter en de setter.

Ik heb al een lange tijd niet meer met C# als in Windows Forms gewerkt, maar ik dacht dat er daar een pagina was voor Application.

Als je hierin een public static referentie naar je settings bestand maakt, dan zou je bijv. kunnen oproepen van:

Application.myref.setValue(value);

of String MyValue = Application.myref.getValue();

dit is overigens de makkelijke versie van Singleton..

-----------

Daarnaast is dit geen vervanging voor de manier van titjes, enkel een toevoeging.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2019 Sitemasters.be - Regels - Laadtijd: 0.334s