Group, you were very helpful to me in adding multiple textboxes, labels, etc., in my original post. If you would like to read through that, see http://www.daniweb.com/software-development/vbnet/threads/447985/creating-multiple-labels-textboxes-etc.-dynamically#post1934799.
In a similar vein, I now want to dynamically add these multiple panels within a "main" panel, one at a time, with the use of a button control.
I have created the first panel within the main panel on the form itself. Using the code the group and I developed in the original post (see the link above), I have the program generating the additional, identical forms. That code looks like this:
Private Sub btnCreateNewLine_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateNewLine.Click
Dim b As String = Short.Parse(a)
'This creates the label "Part No."
Dim lblPrtNo As New Label()
lblPrtNo.Name = "lblPrtNo" & Convert.ToString(b)
lblPrtNo.Text = "Part Number"
lblPrtNo.ForeColor = Color.White
lblPrtNo.Font = New Font("Sans Serif", 9)
lblPrtNo.Font = New Font(lblPrtNo.Font, FontStyle.Regular)
lblPrtNo.Location = New Point(13, 8)
lblPrtNo.Size = New Size(77, 15)
Me.Controls.Add(lblPrtNo)
'
'This generates the textbox for the user to enter the Part No.
Dim txbPartNo As New TextBox()
txbPartNo.Name = "txbPartNo" & Convert.ToString(b)
txbPartNo.Text = ""
txbPartNo.ForeColor = Color.Black
txbPartNo.BackColor = Color.Yellow
txbPartNo.Font = New Font("Sans Serif", 10)
txbPartNo.Font = New Font(txbPartNo.Font, FontStyle.Bold)
txbPartNo.Location = New Point(16, 26)
txbPartNo.Size = New Size(263, 22)
txbPartNo.Cursor = Cursors.Hand
txbPartNo.AcceptsReturn = True
txbPartNo.AcceptsTab = True
txbPartNo.TabIndex = 10
AddHandler txbPartNo.TextChanged, AddressOf txbPartNo_Textchanged
Me.Controls.Add(txbPartNo)
'
' This generates the button control to do a part number search
Dim btnPartNoSearch As New Button()
btnPartNoSearch.Name = "btnPartNoSearch"
btnPartNoSearch.Text = "S"
btnPartNoSearch.FlatStyle = FlatStyle.Popup
btnPartNoSearch.FlatAppearance.BorderColor = Color.Black
btnPartNoSearch.FlatAppearance.BorderSize = 2
btnPartNoSearch.Cursor = Cursors.Hand
btnPartNoSearch.TabIndex = 11
btnPartNoSearch.ForeColor = Color.White
btnPartNoSearch.BackColor = Color.Red
btnPartNoSearch.Size = New Size(26, 23)
btnPartNoSearch.Location = New Point(285, 26)
btnPartNoSearch.Visible = True
Me.Controls.Add(btnPartNoSearch)
'This creates the Panel and sets the labels and Textboxes to be displayed.
Dim pnlOrderLine As New Panel()
pnlOrderLine.Size = New Size(1577, 122)
pnlOrderLine.Location = New Point(12, x)
pnlOrderLine.BorderStyle = BorderStyle.Fixed3D
pnlOrderLine.ForeColor = Color.White
pnlOrderLine.Controls.Add(lblPrtNo)
pnlOrderLine.Controls.Add(txbPartNo)
pnlOrderLine.Controls.Add(btnPartNoSearch)
pnlOrderLine.Visible = True
Me.Controls.Add(pnlOrderLine)
Private Sub txbPartNo_Textchanged(ByVal sender As System.Object, ByVal e As EventArgs)
Dim txbPartNo As TextBox = DirectCast(sender, TextBox)
Me.Text = txbPartNo.Name & ": " & txbPartNo.Text
txbPartNo.Show()
Now the challenge is to get the second panel (remember, the first was created on the form) to display within this main panel that I am calling "pnlMainPanel". To do this, my assumption is that I use similar logic as we did to "copy" the original panel. So I wrote this"
' This set the order line panel within the main panel
Dim pnlMainPanel As New Panel()
pnlMainPanel.Controls.Add(pnlOrderLine)
pnlMainPanel.Visible = True
Me.Controls.Add(pnlOrderLine)
Unfortunately, the subsequent panels are created, but they are outside and behind this "main" panel. How do I get these inside the main panel?
In advance, thanks for all the assistance.
Don