textBox(i).Text

Status
Niet open voor verdere reacties.

gast0514

Gebruiker
Lid geworden
8 okt 2007
Berichten
43
Hallo allemaal,

Ik kan me niet voorstellen dat dit nog niet eerder is gevraagd, maar de zoekfunctie helpt me niet verder. Ik wil iets maken als:
Code:
int i = 1;
textBox(i).Text = "test";
Aleen dan iets wat geen errors geeft
Hiermee wil ik meerdere textboxen in een for-loop vullen.

Ik hoop dat iemand me hier bij wil helpen!
 
Ik begrijp niet helemaal wat je vraag is. je probeer een loop te maken die telkens weer een nieuwe messageBox weergeeft?
Code:
for (int i = 1; counter <= 10; i++)
{
messageBox.show("Dit is een tekstbox met nummer" + i)
}

Op deze manier krijg je per loop (van 1 tot en met 10) een message box die zegt "Dit is een tekstbox met nummer ...". Vervolgens wordt het nummer van de loop ingevuld. Per loop wordt er weer een nieuwe messagebox gemaakt.
 
Laatst bewerkt:
Hoi Aggror,

Bedankt voor je antwoord.
Ik bedoel iets anders. Ik wil bijvoorbeeld de tekst "test" in
10 textboxen zetten. Dit zou ik kunnen doen met

Code:
textBox1.Text = "test";
textBox2.Text = "test";
textBox3.Text = "test";
etc

Omdat ik veel textboxen heb wil ik dit graag eenvoudiger maken, bijvoorbeeld op deze manier:

Code:
for (int i = 1; counter <= 10; i++)
{
textBox(i).Text = "test"
}

Ik gebruik de waarde van i dus om een naam weer te geven:
Als i = 1 dan is textBox(i).Text hetzelfde als textBox1.Text

Zoals ik het nu doe (met die i tussen haakjes) krijg ik foutmeldingen. Dit werkt dus
niet. Misschien werkt het als ik die i tussen andere tekens zet, of moet het op een
hele andere manier. Dit is wat ik graag zou willen weten!
 
hallo,
ik zal vandaag es kijken hoe ik dit kan oplossen. Ik vraag me alleen af waar je al die textboxen (of bedoel je messageboxen?) voor nodig hebt.

Ik begrijp wat je wilt doen. Het probleem wat hier optreedt is dat je moet aangeven waar deze textboxen komen te staan op je formulier. Hoe je dat moet doen is even op zoeken.

hieronder wat voorbeelden om een nieuwe textbox aan te maken via code. het enige wat er nog ontbreekt is de postitie van de tekstbox

Code:
private void CreateMyMultilineTextBox()
 {
    // Create an instance of a TextBox control.
    TextBox textBox1 = new TextBox();
    
    // Set the Multiline property to true.
    textBox1.Multiline = true;
    // Add vertical scroll bars to the TextBox control.
    textBox1.ScrollBars = ScrollBars.Vertical;
    // Allow the RETURN key to be entered in the TextBox control.
    textBox1.AcceptsReturn = true;
    // Allow the TAB key to be entered in the TextBox control.
    textBox1.AcceptsTab = true;
    // Set WordWrap to True to allow text to wrap to the next line.
    textBox1.WordWrap = true;
    // Set the default text of the control.
    textBox1.Text = "Welcome!";
 }

Wat je ook nog kunt proberen:

Code:
for (int i = 1; counter <= 10; i++)
{
textBox[i].Text = "test"
}

Ik zie net dat je ( ) gebruikt ipv. [ ]
 
Laatst bewerkt:
Om mijn probleem uit te leggen heb ik textboxen gebruikt. In mijn programma zijn dit eigenlijk Labels, die de vrije ruimte van posities in een magazijn weergeven (momenteel zijn dit er enkele tientallen, maar dit zouden er 100 of meer kunnen worden!).

Vierkante haakjes [ ] ipv ronde haakjes ( ) heb ik ook geprobeerd, maar ook hiermee krijg
ik foutmeldingen. Het idee van de ronde haakjes heb ik uit een stukje Visual Basic code.

In deze code worden de buttons ook d.m.v. code op het form geplaatst. De code die je plaatste lijkt hier veel op, dus waarschijnlijk is dat wel de juiste methode. Ik zal de Visual Basic code hier even plaatsen. Zelf werk ik niet met VB dus ik weet niet zeker of en hoe de code werkt.

Code:
'Textboxen genereren en als je op een van deze klikt iets uitvoeren.

Public Class Form1
'Aantal patronen
    Dim max_aantal_patronen As Integer = 10
    Dim var_aantal_patronen As Integer = 1

'Declaraties om te kunnen genereren
    Dim TB_patroon_nmr(max_aantal_patronen) As TextBox
    Dim TB_patroon_nmr_temp As TextBox  


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       var_aantal_patronen += 1
       Genereren()
End Sub

Private Sub Genereren()'Textboxen genereren
        For i = 1 To var_aantal_patronen
            ReDim Preserve TB_patroon_nmr(i)
            TB_patroon_nmr_temp = New TextBox
            TB_patroon_nmr_temp.Name = (i) 
            TB_patroon_nmr_temp.Text = (i)
            TB_patroon_nmr_temp.Width = 20
            TB_patroon_nmr_temp.Height = 20
            TB_patroon_nmr_temp.Location = New Point(10, 15 + (25 * i))
            TB_patroon_nmr_temp.TextAlign = HorizontalAlignment.Right
            TB_patroon_nmr_temp.ReadOnly = True
            TB_patroon_nmr_temp.BackColor = Color.Orange
            PNL_Gaten_Patroon..Add(TB_patroon_nmr_temp)
            TB_patroon_nmr(i) = TB_patroon_nmr_temp
            AddHandler TB_patroon_nmr(i).Click, AddressOf ButtonArray_click
            Next
End Sub

Private Sub ButtonArray_click(ByVal sender As Object, ByVal e As System.EventArgs)
‘Alles wat je nu in deze sub zet zal het programma gaan uitvoeren als je op ‘een van de gegenereerde textboxen gedrukt hebt.
‘AddHandler TB_patroon_nmr(i).Click, AddressOf ButtonArray_click
 ‘Je kan bijvoorbeeld zeggen:
Dim i As Integer = 1
TB_patroon_nmr(i).BackColor = Color.Red
End Sub

End Class
 
Het probleem zit hem in het volgende:
Textbox1 is de naam van de control.

Je zou het volgende kunnen proberen:

Code:
        private void test(Control control, string text)
        {
            foreach (Control c in control.Controls)
            {
                if ((c as TextBox) != null) (c as TextBox).Text = text;
                if (c.HasChildren)
                {
                    test(c, text);
                }
            }
        }

(niet getest) !!
 
Poehh :eek:

Die code snap ik niet helemaal. Zou deze de text van ALLE textboxen op het form veranderen
naar de waarde van 'text'?
 
Laatst bewerkt:
Helemaal correct.

Textbox is een klasse die inherit van Control.
Alle usercontrols (button, textbox, panel enz) doen dit.

Nu loop ik door alle controls heen en probeer ik dit te casten naar een textbox.
Als dit niet lukt wordt tb null.

Daarna kijkt de code of de control child controls bezit, (panel met textboxes).
Zo ja, roep dan je eigen code aan om die child controls te doorlopen.

Om te beginnen moet je eigenlijk het volgende doen:
Code:
            foreach (Control c in Form1.Controls)
            {
                  test(c, "Test");
             }
 
2 errors met dat stukje code :confused:

Is het dan echt niet mogelijk om een naam d.m.v. een integer
'aan te roepen' in een for-loop?!
 
2 errors met dat stukje code

Is het dan echt niet mogelijk om een naam d.m.v. een integer
'aan te roepen' in een for-loop?

Waar precies?

Tevens kun je proberen of je hier wat mee kunt?

Code:
for (int i = 1; i <= 10; i++)
{
TextBox tb = this.Controls.Find(String.Concat("textBox", i),false) as TextBox;
tb.Text = "Test"
}
 
Het beste is je tekstboxen in een array te stoppen en dan ernaar te verwijzen in een for-loop.

private TekstBoxen[] atText;
TekstBoxen = new TextBox[10];

for (int i = 1; i <= 10; i++)
{
atText.Text = "test";
}
 
Hallo,

Sorry voor de enorm late reactie, ik heb geen mailtje ontvangen dat er gereageerd is!
Bedankt voor jullie hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan