Array Met textboxes

Status
Niet open voor verdere reacties.

dotnick

Gebruiker
Lid geworden
10 mei 2007
Berichten
5
Wat ik wil is dat aan de hand van een bepaalde waarde (een aantal) ook een aantal TextBoxes wordt gecreerd.

Deze Textboxes heb ik nodig om dynamisch per een Type gegevens in te vullen.

Ik heb het volgende maar dit werkt niet helemaal:

Code:
Dim TextBoxes() As TextBox 
        
    For i = 1 To PapersizeCount 
        
        TextBoxes(i).Text = "tekst" 
        
    Next

Weet iemand daar iets op?
Alvast bedankt
 
Dag Dotnick,

Je kunt beter één textbox gebruiken en via een lus de gegevens intypen en opslaan in een tabel.

Gegroet,

Axel.
 
Dat kan ook, maar is Usability technisch niet helemaal handig.

Het kan zo zijn dat je per Type 7 dingen moet invullen.
Stel je hebt 10 van die Types dat betekent dat je dus 70 keer elke keer moet invoegen submitten...

In ieder geval bedankt voor het meedenken
 
Dag Dotnick,

Leg dan eens uit wat je precies wilt, want met een paar losse kreten bouw je geen programma.

Overigens:
1. Als er om zeventig verschillende zaken wordt gevraagd, moet je ook zeventig keer een antwoord intypen.
2. Wat is invoegen submitten?

Gegroet,

Axel.
 
Het gaat om het volgende:

Ik heb een aantal archieftypen, nl: Rapporten, kaarten, logs, etc.
Per Archieftype heb je verschillende papersizes (dus A3,A4,A0, etc)

Per papersize moet je de aantallen kunnen invoeren.
Aangezien je per Archieftypes (dynamisch) een aantal papersizes hebt, wil ik om die aantallen in te vullen aan de hand van papersizes die geselecteerd worden TextBoxes creeren. Maar zoals ik al eerder zei lukt dit niet helemaal.

Ik denk dat dit een stuk duidelijker is...
 
Dag Dotnick,

Sorry, maar duidelijk is het me niet. Vooral niet wat het de aantallen betreft en waarom je steeds een wisselend aantal textboxen wilt plaatsen. Wat is de zin daarvan?

1. Je hebt verschillende soorten documenten.
2. De soorten documenten hebben verschillende afmetingen (A0, A1, A2, A3, A4).
3. Per afmeting moet je aantallen kunnen invoeren. (Wat voor aantallen?)

Ik stel voor dat je twee comboboxen en één textbox op je dialoogvenster plaatst:
1 combobox met de verschillende soorten documenten;
1 combobox met de verschillende afmetingen;
1 textbox om de aantallen in te voeren.

Gegroet,

Axel.
 
Ik heb nu niet beredeneert of dit nu wel de meest toepasselijke oplossing of niet.
Daarom geef ik maar gewoon een antwoord op de vraag ;)

Het is niet omdat je een aantal textboxen aanmaakt dat ze daarom direct al weergegeven worden. Je bent wel al op goed weg. Maak in je for lus altijd een nieuwe textbox aan. Om die weer te geven moet je die in een control zetten. Ofwel voeg je ze gewoon aan je form zelf via Me.Controls.Add(). Ofwel zet je eerst een panel en zet je ze daar allemaal op.
Vergeet ook niet om de textboxen te positioneren. Je kan in het begin een X en Y waarde vastleggen, die je dan laat opschuiven ten opzichte van de vorige textbox.

:thumb:
 
Dankje voor de reactie,

Zou je een voorbeeldje kunnen geven aan de hand van wat ik had opgegeven,

Alvast heel erg bedankt
 
Code Voorbeeld

Allé omdat vrijdag is :cool:

btnGen gaat de textboxen creëren
btnValues gaat de waarden die erin zitten overlopen

Heb het uitgebreid gemaakt, dus je zal hieraan meer dan voldoende hebben

Code:
Public Class Form1

    'Bovenaan een aantal vaste waarden instellen zodat die later makkelijk te wijzigen zijn
    Private iSpacing As Integer = 10
    Private iStartX As Integer = 12
    Private iStartY As Integer = 60
    Private iHeight As Integer = 20


    Private Sub btnGen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGen.Click
        Dim iAantal As Integer = Convert.ToInt32(nudAantal.Value)
        Dim txtPrevious As TextBox = Nothing

        For i As Integer = 1 To iAantal
            'Nieuwe textbox aanmaken en naam bepalen adhv het opgegeven nummer
            Dim txt As New TextBox()
            txt.Name = "txt" & i
            'Hier wordt de left gewoon gelijk gezet aan de opgegeven waarde
            'Je kan hiervoor natuurlijk ook een verschuiving opgeven, wat ik in dit voorbeeld
            'niet gedaan heb
            txt.Left = iStartX

            'De top berekenen adhv de vorige textbox, wanneer die er is
            'Anders gelijkstellen aan de opgegeven waarde
            If Not txtPrevious Is Nothing Then
                txt.Top = txtPrevious.Top + iHeight + iSpacing
                txt.Height = iHeight
            Else
                txt.Top = iStartY
            End If

            'Textbox toevoegen aan formulier en visible zetten
            Me.Controls.Add(txt)
            txt.Visible = True

            'Laatst toegevoegd textbox opslaan in txtPrevious om positie voor volgende te bepalen
            txtPrevious = txt
        Next
    End Sub

    Private Sub btnValues_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValues.Click
        Dim txt As TextBox = New TextBox

        'Controleren of het type control wel van het type textbox is
        For Each oControl As Control In Me.Controls
            If oControl.GetType.ToString = txt.GetType.ToString Then

                'Methode 1
                'Een nieuwe textbox aanmaken en die gelijkstellen aan control
                Dim txtTemp As TextBox = oControl
                Console.WriteLine(txtTemp.Text)

                'Methode 2
                'Definieëren welk type het is adhv Ctype
                Console.WriteLine(CType(oControl, TextBox).Text)
            End If
        Next
    End Sub
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan