'
' Name:
'
' DynamicTextBoxes
'
' Description:
'
' Simple example of how to create and use textboxes at run time. The number of rows and
' columns of textboxes are defined by ROWS and COLS. The spacing between controls is defined
' by XPAD and YPAD. The control size is defined by TBWIDTH and TBHEIGHT and the location of
' the control at the top left is defined by XSTART and YSTART.
'
' Audit:
'
' 2012-05-20 Reverend Jim
'
Public Class Form1
Const XPAD = 5 'horizontal spacing between controls
Const YPAD = 5 'vertical spacing between controls
Const ROWS = 5 'number of rows of textboxes
Const COLS = 5 'number of columns of textboxes
Const TBWIDTH = 100 'text box width
Const TBHEIGHT = 20 'text box height
Const XSTART = 10 'x position of first text box
Const YSTART = 10 'y position of first text box
Private boxes(ROWS, COLS) As TextBox
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim newbox As TextBox
'create a grid of textboxes
For row As Integer = 0 To ROWS - 1
For col As Integer = 0 To COLS - 1
'calculate the position of the nex textbox
Dim xpos As Integer = XSTART + row * (XPAD + TBWIDTH)
Dim ypos As Integer = YSTART + col * (YPAD + TBHEIGHT)
'create a new textbox and set its properties
newbox = New TextBox
newbox.Size = New Drawing.Size(TBWIDTH, TBHEIGHT)
newbox.Location = New Point(xpos, ypos)
newbox.Name = "TextBox" & row & "_" & col
newbox.Text = newbox.Name
'connect it to handlers, save a reference to the array and add it to the form controls
AddHandler newbox.TextChanged, AddressOf TextBox_TextChanged
AddHandler newbox.Enter, AddressOf TextBox_Enter
boxes(row, col) = newbox
Me.Controls.Add(newbox)
Next
Next
End Sub
Private Sub TextBox_TextChanged(sender As System.Object, e As System.EventArgs)
'when you modify the contents of any textbox, the name of that textbox and
'its current contents will be displayed in the title bar
Dim box As TextBox = DirectCast(sender, TextBox)
Me.Text = box.Name & ": " & box.Text
End Sub
Private Sub TextBox_Enter(sender As System.Object, e As System.EventArgs)
'when you enter a textbox control, its current contents will be displayed
'in the title bar
Dim box As TextBox = DirectCast(sender, TextBox)
Me.Text = box.Name & ": " & box.Text
End Sub
End Class