Toon posts:

[C#] string converteren naar control

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een string welke de name van een willekeurige textbox voorsteld op mijn form.

Nu wil ik wanneer ik in één bepaald textbox de waarde verander dat ook de waarde veranderd wordt van de textbox die de naam heeft zoals deze gemeld is in de variabel string tijdelijk.

Eigenlijk wil ik dus zoiets hebben als

(tijdelijk).Text = textbox_std.Text;

Waarvan (tijdelijk) dus de naam is van een andere textbox op het formulier.
Nu zo ik dit met een lus kunnen doen en alle textboxen vergelijken met de waarde van tijdelijk maar ik vraag me af of dit niet simpeler mogelijk is.

In php had je iets van een eval functie ik weet niet of een soort gelijke functie hierbij ook toepasbaar is.

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Visual Basic .NET:
1
2
3
4
5
If Me.Findcontrol(tijdelijk) Is Nothing
   Throw New Exception("Control not found")
Else
    DirectCast(Me.Findcontrol(tijdelijk),Textbox).Text = textbox_std.Text
End if

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik krijg de findcontrol niet aan de praat. Ik ben bezig met de code om te bouwen naar een c# code maar telkens blijft hij hangen op findcontrol. Ik heb al wel in de handleiding gezocht en ook volgens daar moet hij findcontrol kennen dus.
Wel moet ik dan een using toevoegen maar de using die ik moet toevoegen (system.web.ui) kent hij niet.

Ik neem aan als het in vb werkt dat het ook in c# moet werken.
Werk trouwens neit in een .net omgeving maar gewoon winforms.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

winforms en c# zijn .net ;)

[ Voor 18% gewijzigd door .oisyn op 24-08-2004 15:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:01
In Winforms kan je door de ControlCollection van een form (of een andere container-control) lopen.
Je kan eigenlijk een eigen 'FindControl' method maken zo:

code:
1
2
3
4
5
6
7
8
9
Control ctrl FindControl (string name, Control containerCtrl )
{

   foreach( Control c in containerCtrl.Controls )
   {
        if( c.Name == name ) return c;
   }

}


Dit is een beetje losse-hand code. De properties enzo kunnen niet kloppen, etc... maar ik denk wel dat je de bedoeling snapt.
Je overloopt gewoon de Controls property van een containercontrol (form, panel, ...). Die Controls property is een collection waar alle controls die op die containercontrol staan zitten. Je overloopt ze dus, en kijkt of de naam overeen komt met de naam die je wilt.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:01
FindControl is trouwens een member method van System.Web.UI.Control. Dit zal dus niet werken in WinForms, vandaar dat je zelf een beetje extra werk zult moeten doen. (Zie hierboven).

https://fgheysels.github.io/


  • rollebol
  • Registratie: Mei 2000
  • Laatst online: 22-08-2025
Ik snap je vraag niet helemaal geloof ik, maar ik denk dat je een TextChanged event handler wil hebben. Dus als van form element 1 de tekst verandert, wil je dat de verandering in form element 2 ook te zien is.

Dit doe je on form load:
C#:
1
this.txtInvoerveld.TextChanged += new System.EventHandler(this.naamVanJeMethod);


In de method (die je in het form-object zet) pas je dan gewoon de Text property van de control waar je tekst ook moet staan aan.

[ Voor 14% gewijzigd door rollebol op 24-08-2004 15:33 ]


Verwijderd

Topicstarter
whoami, zo heb ik het nu ook gemaakt, maar ik vroeg me af of er geen simpelere oplossing was.

Nu moet je alles gaan controleren (niet dat het veel werk is voor mij of de pc) terwijl je met dat andere maar een handeling kwijt zou zijn.

Maar blijkbaar moet het dus ook zoals ikh et nu ongeveer had.

  • rollebol
  • Registratie: Mei 2000
  • Laatst online: 22-08-2025
Hm, het lijkt erop alsof ik de TS echt verkeerd begrepen heb... Ik begrijp hem nu wel, wat ik zei is niet van toepassing... ;)

[ Voor 31% gewijzigd door rollebol op 24-08-2004 15:35 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 24 augustus 2004 @ 15:33:
whoami, zo heb ik het nu ook gemaakt, maar ik vroeg me af of er geen simpelere oplossing was.

Nu moet je alles gaan controleren (niet dat het veel werk is voor mij of de pc) terwijl je met dat andere maar een handeling kwijt zou zijn.

Maar blijkbaar moet het dus ook zoals ikh et nu ongeveer had.
Wat denk je dat die andere methode intern doet?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:01
Verwijderd schreef op 24 augustus 2004 @ 15:33:
whoami, zo heb ik het nu ook gemaakt, maar ik vroeg me af of er geen simpelere oplossing was.
Ik denk het wel, maar dat zal dan eerder aan het ontwerp van je applicatie liggen.
Ik vind het eigenlijk altijd vreemd als mensen een control willen gaan benaderen adhv een string variable (bepaalde gevallen daar gelaten; bv. voor localisation e.d. is het handig als je als key voor je resource-text de naam van de control gebruikt).

Wat wil je eigenlijk gaan doen, dat je dit eigenlijk nodig hebt?
Nu moet je alles gaan controleren (niet dat het veel werk is voor mij of de pc) terwijl je met dat andere maar een handeling kwijt zou zijn.
Hmm, hoe denk je dat die 'andere' handeling geimplementeerd is?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik laat de mensen aan de hand van een functie zelf een aantal textboxjes op een formulier slepen.
Iedere textbox krijgt zo zijn eigen unieke naam.
Daarnaast is er ook een propertie window waarmee ze bepaalde settings per textbox kunnen doen.
Ik wil echter maar een functie hebben die alle (misschien 1 misschien 30) textboxjes op dezelfde manier afhandeld.

Daarvoor had ik die string nodig omdat ik een string heb waar ik de geselecteerde textbox in plaats.

Dat is echter het volgende probleem waarmee ik tegen de lamp loop.
Ik klik op een textbox en krijg nu nooit zijn naam te pakken. Maar als ik dus die loop afloop staat zijn naam er wel tussen. Ik had verwacht dat de naam wel via de sender op te halen zou zijn. Maar dat is dus niet het geval.
Is dit dus eigenlijk wel mogelijk wat ik wil.

Ik ben pas 2 dagen hiermee aan het programmeren dus vandaar dat ik overal niet zo heel snel uitkom, ben nog beetje zoekende.....

Nu dus het volgende probleem zien op te lossen.....

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:01
Je kan de sender toch casten naar een Control, en dan de naam pakken ?

code:
1
2
3
4
5
6
Control c = sender as Control;
if( c != null )
{
  // sender is een control
  MessageBox.Show (c.Name);
}

https://fgheysels.github.io/


Verwijderd

Topicstarter
Perfect dit werkt!

Pfoe ik moet nog een hoop leren 8)7

bedankt
Pagina: 1