Control Arrays in Visual Basic .NET!
MAXIMUMELEMENTEN bepaalt de maximum grootte van de control array.
De BOXWIDTH and BOXHEIGHT constanten bepalem de width and height van de textboxen.
Het voordeel van het werken met beschrijvende elementen is dat het later gemakkelijker debuggen is. voorbeeld
For i = 1 to 80
of
For i = 1 to MAXIMUMELEMENTEN
Je weet later niet waar je de 80 voor bedoeld hebt en bij de onderste zet de waarde boven aan je code en je kunt deze waarde later weer gebruiken.
Listing 1
Public Class ***********
Inherits System.Windows.Forms.Form
'================ Member Data ===================================== Private Const MAXIMUMELEMENTEN As Integer = 81
Private Const BOXWIDTH As Integer = 30 ' textbox deze breedte Private Const BOXHEIGHT As Integer = 20 ' textbox deze hoogte Private Const SPACEBETWEEN As Integer = 12 ' spatie tussen textboxen Private Const ROWOFFSET As Integer = 80 ' Space tussen rijen
Private txtElement(MAXELEMENTS) As TextBox
Private lblElement(MAXELEMENTS) As Label
Private txtArtikelcode(MAXELEMENTS) As TextBox
Private lblOmschrijving(MAXELEMENTS) As Label
Private MatrixSize As Integer
Dim textBoxArray As New ArrayList
Listing 2
Private Sub InitializeTextboxes() Dim i, j As Integer Dim MySize As Size
MySize.Width = BOXWIDTH ' iedere textbox krijgt deze breedte en hoogte MySize.Height = BOXHEIGHT
For i = 0 To MAXELEMENTS - 1 txtElement(i + 1) = New
TextBox ' Statement 1: Make a new one
Me.Controls.Add(txtElement(i + 1)) ' Statement 2: Put on form
txtElement(i + 1).Size = MySize ' Statement 3: textbox size
txtElement(i + 1).TextAlign = HorizontalAlignment.Center
txtElement(i + 1).Visible = True
txtElement(i + 1).Location = New Point(30, (i * 20) + 150)
Me.Controls.Add(txtElement(i + 1))
textBoxArray.Add(txtElement(i + 1))
'AddHandler txtElement(i + 1).Leave, AddressOf TextBoxes_Click
txtArtikelcode(i + 1) = New TextBox ' Statement 1: Make a new one
Me.Controls.Add(txtArtikelcode(i + 1)) ' Statement 2: Put on form
txtArtikelcode(i + 1).Size = New Size(80, 20) ' Statement 3:
textbox size
txtArtikelcode(i + 1).TextAlign = HorizontalAlignment.Center
txtArtikelcode(i + 1).Visible = True
txtArtikelcode(i + 1).Location = New Point(120, (i * 20) + 150)
txtArtikelcode(i + 1).Tag = i + 1
Me.Controls.Add(txtArtikelcode(i + 1))
textBoxArray.Add(txtArtikelcode(i + 1))
AddHandler txtArtikelcode(i + 1).Leave, AddressOf
TextBoxesArtikelcode_Click
lblOmschrijving(i + 1) = New Label ' Statement 1: Make a new one
Me.Controls.Add(lblOmschrijving(i + 1)) ' Statement 2: Put on form
lblOmschrijving(i + 1).Size = New Size(80, 20) ' Statement 3:
textbox size
lblOmschrijving(i + 1).TextAlign = HorizontalAlignment.Center
lblOmschrijving(i + 1).Visible = True
lblOmschrijving(i + 1).Location = New Point(200, (i * 20) + 150)
Me.Controls.Add(lblOmschrijving(i + 1))
textBoxArray.Add(lblOmschrijving(i + 1))
lblOmschrijving(i + 1).Text = "--"
'AddHandler lblOmschrijving(i + 1).Leave, AddressOf TextBoxes_Click
Next i End Sub
Listing 3 Voor het aanroep van de click en leaves
de onderstaande subs
Private Sub
TextBoxesArtikelcode_Click(ByVal sender As Object, ByVal e As EventArgs)
DirectCast(lblOmschrijving(sender.tag),
Label).Text = DirectCast(txtElement(sender.tag), TextBox).Text & " x " &
DirectCast(txtArtikelcode(sender.tag), TextBox).Text
End Sub
|