Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C#] Verwijzen naar een textbox d.m.v een variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik ben bezig met een Windows Form Application in C#. Nu heb ik textbox1, textbox2, textbox3 tot en met 10.
Verder zijn er nog een aantal variabelen welke ik in een for-loop heb gezet. Stel dat var x = 10. Dan wil ik dit bereiken:

textbox[x].Text = "randombla".

Dit geeft echter een foutcode. Moet ik hiervoor mijn textboxen in een array zetten of is er een makkelijkere oplossing? Alvast bedankt! :)

  • 418O2
  • Registratie: November 2001
  • Laatst online: 12:05
Wat voor foutcode, wat is de naam van je textboxes?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je kan iets wat geen array is inderdaad niet benaderen als array.

@Catch22: dat staat al in zijn startpost. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • GBCHEATER
  • Registratie: Juni 2003
  • Laatst online: 17-09-2024
Dan zal je iets als ((TextBox)Form.Controls["textbox"+x]).Text = "asdf" moeten doen. (dan ga ik er vanuit dat de textboxen ook daadwerkelijk de naam textbox1-textbox10 hebben)

Toch denk ik dat er wel een mooiere oplossing is dan dit.

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 15:31

Haan

dotnetter

De textboxen (textbox1, textbox2 etc.) zijn variabelen, de naam daarvan kan je niet dynamisch in een for-loopje construeren (of je moet het via Reflection doen, maar dat wil je niet).
Dus je zou ze inderdaad in een array kunnen stoppen.

Kater? Eerst water, de rest komt later


  • Schnoop
  • Registratie: Juli 2006
  • Laatst online: 24-09 21:03
Via lijst:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
List<Textbox> textBoxList = new List<TextBox>();
list.Add(textbox1);
list.Add(textbox2);
list.Add(textbox3);

foreach(Textbox t in textBoxList)
{
 t.Text = "Hoi";
}

//Of
for(int i =0; i<textBoxList.Count;i++)
{
 textBoxList[i].Text = "Hoi";
}

//Of

textBoxList[0].Text = "Hoi"


Je kan ook een panel maken en daar je textboxes in zetten en dan:
C#:
1
2
3
4
5
6
7
foreach (Control x in myPanel.Controls)
{
 if (x is TextBox)
  {
    ((TextBox)x).Text = String.Empty;
  }
}


Of geen panel maken en myPanel.Controls vervangen door this.Controls, dan loopt ie over alle textboxen in de form. Hij ittereert dan alleen top level textboxen maar niet textboxen welke in controls staan, dan zal je met recursion moeten gaan werken.

[ Voor 20% gewijzigd door Schnoop op 14-04-2014 14:00 ]

Pagina: 1