Avatar billede janborup Praktikant
22. marts 2003 - 23:54 Der er 6 kommentarer og
1 løsning

VB.NET indirect controls.

Hej Allesammmen.

Jeg har brug for at lave en indirekte reference til en textbox fks. txtFelt1.Text udfra indholdet af en streng.

Jeg har prøver at lede i lang tid, men kan ikke finde den rigtige syntax. Jeg har prøvet:
  Me.Controls("txtDommer"+Cstr(FeltNo)).Text

Dette kan jeg godt oversætte dette, men jeg får en fejl på den hvergang under afvikling.

Nogen forslag til en korrekt syntax/måde at få det til at virke på. ?????

Dette virker fint i VBA, men åbenbart ikke i VB.NET

De bedste hilsner
Jan Borup Coyle
Avatar billede tjacob Juniormester
23. marts 2003 - 08:37 #1
Du kan ikke referere til en kontrol på denne måde.

Du kunne feks løbe igennem alle kontroller (eller alle txtbokse), og derved finde den rigtige:

    Dim cCon As Control
    for each cCon in Me.Controls
        if cCon.Name = "din streng" then bla bla bla
    Next


Men det ville være meget nemmere hvis du kunne bruge indexer. jeg kan se at du referer til et FeltNo.

Hvis du lavede et kontrolarray af dine textbokse, så ville det være meget simpelt (her kalder jeg dem txtBox):

    txtBox(FeltNo).Text = bla bla

/tjacob
Avatar billede tjacob Juniormester
23. marts 2003 - 09:10 #2
Eller i din egen syntaks:    txtFelt(FeltNo).Text = bla bla
Avatar billede janborup Praktikant
24. marts 2003 - 01:02 #3
Hej Jacob

Jeg kender også den med at løbe kontrollerne igennem i en For+Next løkke, så betyder dit svar at man ikke kan lave et inddirekte kald til den kontrol, eller ved du ikke om man kan ????

De virker bare mærkeligt for i VBA, er det meget nemt at lave dette, og det er noget jeg bruger tit, hvis man har mange ens continuerlige kontroller.

/Jan Borup Coyle
Avatar billede tjacob Juniormester
24. marts 2003 - 07:51 #4
Du kan ikke kalde deres NAVN på denne måde, men du kan som sagt lave et kontrolarray, hvor alle textboksene hedder det samme, men har forskelligt index. Dette index kunne du så sætte efter de værdier FeltNo kan antage.

  f.eks.  txtFelt(1) og txtFelt(2) osv  eller txtFelt(275)

Er du med?
Avatar billede janborup Praktikant
25. marts 2003 - 22:20 #5
Hej Jacob

Jeg er desværre ikke helt med endnu, for hvis jeg forsøger at tildele navnet txtFelt(1) i Name properties på en TextBox - skriver den bare "Invalid property value".

Prøver jeg at oprette to Textboxe med navnet "txtFelt", får jeg også samme fejl - så du må lige guide mig det sidste stykke - ellers forstår jeg ikke hvor du vil henaf.

/Jan Borup Coyle
Avatar billede tjacob Juniormester
25. marts 2003 - 22:33 #6
OK; Lav en textboks txtFelt.
Kopier den og sæt ind i formen. VB vil nu spørge om du ønsker at lave et kontrolarray. Svar ja, og nu har du to bokse. De har index 0 og 1. Du kan lave så mange du ønsker.

/tjacob
Avatar billede janborup Praktikant
04. april 2003 - 14:41 #7
Hej Jacob

Jeg har givet dig point for ihærdigt at svare, men jeg kan DÆLME ikke så det til at virke.

Tager jeg og starter Visual Studio.Net, laver et Visual Basic project (Windows Application), dragger en TextBox ud på formen, renamer den til txtFelt, kopierer den og paster den ind igen, kommer der bare et tilsvarende felt... den spørger absolut ikke om noget som helt hos mig.

Heller ikke søgning efter "Control array" eller "Arrays of controls" giver nogen plausibel forklaring på det du fortæller.

Vær flink at give en Step-By-Step forklaring på hvad der skal gøres.

/Jan Borup Coyle
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester