object naam samenstellen

  • Onderwerp starter Onderwerp starter bn2vs
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
ik wil dit met 1 loop doen, maar weet niet hoe ik "hist" + x moet vormen.

PHP:
        hist1.Text = history(0)
        hist2.Text = history(1)
        hist3.Text = history(2)
        hist4.Text = history(3)
        hist5.Text = history(4)

iemand enige suggestie?
 
Kun je niet beter een control array gebruiken ? Mocht je dat niet willen, dan kun je het nog altijd met een for-each loop oplossen. Iets als onderstaande:

Code:
Dim ctrl As Control, i As Integer, s As String
i = 2 '
s = "Text"
For Each ctrl In Form1
  If TypeOf ctrl Is TextBox Then
    If ctrl.Name = s + CStr(i) Then
      MsgBox s + CStr(i)
      i = i - 1
    End If
  End If
Next
 
dat werkt niet...
ik krijg "form1 is geen collectie type"

ik werk met visual studio 2005, mss licht het daar aan?

ik vermoed dat dit trouwens ook niet gaat als option strict aanstaat, want heb al iets gelijkaardig uitgeprobeert.
(s + CStr(i))

help :confused:
 
De code die ik postte was voor VB6, maar onder VB.NET werkt het principe achter de code ook. (ook met option strict on)

Code:
Option Strict On
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim s As String = "TextBox"
        Dim ctrl As Control
        Dim i As Integer = 3

        For Each ctrl In Me.Controls
            If TypeOf ctrl Is TextBox Then
                If ctrl.Name = s + CStr(i) Then
                    MsgBox(s + CStr(i))
                    i -= 1
                End If
            End If
        Next

    End Sub
End Class
 
Dat werkt inderdaad :D

Ik vind enkel niet hoe ik nu de waarden (bv .text) kan veranderen van die control, ik heb nu deze code, maar dan maakt die een neiwue control aan met dezelfde naam...

PHP:
Option Strict On
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim s As String = "TextBox"
        Dim ctrl As Control
        Dim i As Integer = 3

        For Each ctrl In Me.Controls
            If TypeOf ctrl Is TextBox Then
                If ctrl.Name = s + CStr(i) Then
                    Dim myObj As Control = New System.Windows.Forms.TextBox
                    myObj.Text = "BLAH" '<< dat gaat dus niet :(
                    i -= 1
                End If
            End If
        Next
    End Sub
End Class

Hoe kan ik ervoor zorgen dat die de bestaande object neemt?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan