visual basic 2010 een nieuwe textbox programmeren.

Status
Niet open voor verdere reacties.

kaas3000

Gebruiker
Lid geworden
17 jan 2009
Berichten
9
hallo,

ik zou graag weten hoe ik met een button een nieuwe textbox programmeer, dus niet erin slepen.
ik heb al gegoogled, maar die sites werkten niet. deze vond ik:

http://bytes.com/topic/visual-basic/answers/737469-create-textbox-runtime
http://www.vbexplorer.com/VBExplorer/vb_feature/april2000/april2000.asp
http://www.ehow.com/how_2056374_create-text-box-visual-basic.html

dat werkte niet. ik heb van mezelf deze code gekregen, maar er gebeurt niks als ik op die knop duw.
Code:
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim corX As Integer = 18
        Dim corY As Integer = 126
        Dim txtNew As New TextBox
        txtNew.Top = 1 + 2
        txtNew.Width = 100
        txtNew.Height = 20
        txtNew.Visible = True

    End Sub

verschrikkelijk bedankt alvast :thumb:


edit:

ik weet nu hoe het kwam, deze code miste:

Code:
Me.Controls.Add(txtNew)

maar, hoe kan ik dat bijvoorbeeld 15 keer herhalen, met bijv de namen textbox1, textbox2,textbox3 etc.
dit aantal moet de gebruiker van mijn programma dan ingeven.
hoe kan ik deze textbox'en dan ook weer aanroepen, of het er nu 1 is of 1000?

kaas3000
 
Laatst bewerkt:
Probeer dit eens:

Code:
        Dim NewTextBox As New TextBox
        NewTextBox.Location = New Point(18, 126) 'TextBox location
        NewTextBox.Size = New Size(100, 20) 'TextBox size
        NewTextBox.Text = "Eventuele Tekst"

        Me.Controls.Add(NewTextBox) 'Plaatst de nieuwe textbox op het form
 
bedankt :D, maar het werkt gelukkig ondertussen al (yes)

maar, hoe maak ik er dan 10 tegelijk?

misschien even handig dat jullie/jij weten wat het programma moet doen, anders snappen jullie er niks van.

ik probeer om wat te oefenen een programma te schrijven dat uitrekent hoeveel blokken er in een bepaalde ruimte passen, (bijv. in een ruimte van 1 bij 1 bij 1, met blokken van 0,25 bij 0,5 bij 0,3 dat het er dan X keer in past). maar als er X (door de gebruiker zelf in te voeren), hoeveel passen er dan in, als bijv. de ene helft met blok A is gevuld, en de andere met blok B.


Probeer dit eens:

Code:
        Dim NewTextBox As New TextBox
        NewTextBox.Location = New Point(18, 126) 'TextBox location
        NewTextBox.Size = New Size(100, 20) 'TextBox size
        NewTextBox.Text = "Eventuele Tekst"

        Me.Controls.Add(NewTextBox) 'Plaatst de nieuwe textbox op het form
 
Je kunt bijvoorbeeld gebruik maken van een For Loop om een stuk code te herhalen. Je zult alleen dan wel steeds de textbox locaties per keer dat de For Loop wordt uitgevoerd moeten aanpassen, anders komen alle textboxen op 1 en dezelfde plek.

Code:
        Dim TussenRuimte As Integer = 0

        For i = 0 To 9 'Herhaal code tussen For... Next 10 keer
            Dim NewTextBox As New TextBox
            NewTextBox.Location = New Point(12, 12 + TussenRuimte)
          
            Me.Controls.Add(NewTextBox)

            TussenRuimte += 26 'Steeds 26 pixels tussenruimte tussen de textboxen
        Next


Wat betreft dat uitrekenen hoeveel blokken er in een bepaalde ruimte passen, ik denk dat dat gewoon een kwestie is van simpel rekenwerk.
 
heel hartelijk bedankt dat werkt, maar hoe kan ik deze dan apart aansturen?, ze heten allemaal (bij mij) txtnew.
 
Wat bedoel je, aansturen? Bedoel je dat ze moeten reageren op een event, zoals het TextChanged event?
 
Als je text in een textbox typt, en je hebt een TextChanged event klaarstaan, dan word de code die je daar onder hebt staan uitgevoerd elke keer als de text in de textbox veranderd word.

Wat je kan doen is elke nieuwe textbox een naam geven, bijvoorbeeld TextBox gevolgt door een getal. Probeer deze aangepaste code eens:

Code:
        Dim TussenRuimte As Integer = 0
        Dim j As Integer = 1

        For i = 0 To 9 'Herhaal code tussen For... Next 10 keer
            Dim NewTextBox As New TextBox
            NewTextBox.Location = New Point(12, 12 + TussenRuimte)
            NewTextBox.Name = "TextBox" & j

            Me.Controls.Add(NewTextBox)

            TussenRuimte += 26
            j += 1
        Next

Alleen dan kan je ze aanroepen.
 
okee, ik snap er steeds meer van :) maar op de ene of andere manier doet hij toch heel erg vreemd. ik heb deze code:
Code:
Dim corX As Integer = 18
        Dim corY As Integer = 126
        Dim name As Integer = 1

        For i = 0 To 9
            Dim txtNew As New TextBox
            txtNew.Location = New System.Drawing.Point(corX, corY)
            txtNew.Name = "txtnew" & name
            Me.Controls.Add(txtNew)
            corY = corY + 20
            Me.Height = (Me.Height + 20)
        Next

        Dim answer As Integer
        answer = (txtnew1 \ txtnew2)
maar dan geeft hij deze foutmelding:

'txtnew1' is not declared. It may be inaccessible due to its protection level.

tot nu toe bedankt voor de moeite alvast :D:thumb:
 
Ik weet niet zeker of dit de juiste manier is, maar het werkt wel.

Pas de For Next code aan:

Code:
        Dim corX As Integer = 18
        Dim corY As Integer = 126
        Dim name As Integer = 1

        For i = 0 To 9
            Dim txtNew As New TextBox
            txtNew.Location = New Point(corX, corY)
            txtNew.Name = "txtNew" & name
            Me.Controls.Add(txtNew)
            corY += 20
            Me.Height += 20
            name += 1
        Next

Plaats deze functie:

Code:
 Private Function GetTextBoxName(ByVal index As Integer) As TextBox
        Return Controls("txtNew" & index)
    End Function

Deze functie zoekt naar de textbox waarvan je de tekst wilt ophalen door gewoon een getal op te geven, bijvoorbeeld GetTextBox(3).Text als je de text in de derde textbox (genaamd txtNew3) wilt ophalen.

En als laatste:

Code:
        Dim answer As Integer
        answer = CInt(GetTextBoxName(1).Text) + CInt(GetTextBoxName(2).Text) 'Waarden in de textboxeb txtNew1 en txtNew2 ophalen en bij elkaar optellen en uitkomst in answer zetten
        MessageBox.Show(answer)

Hopelijk begrijp je een beetje wat er precies gebeurt. :)
 
Laatst bewerkt:
geweldig bedankt, ik ga het morgen testen, als ik nog vragen heb zal ik ze stellen.
maar het lukt wel met die code :d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan