Hello everyone,
How can I focus a panel that is located way below the parent control size. The parent AutoScroll is set to true. See below image.
Controls
pnlControlList Panel
- See
ImageBox02. This is hidden when form loaded. Shown only when
down arrow is click. Items are also panel.
picControlListView PictureBox
To diplay the
pnlControlList
Please see this image.[
^]
ImageBox01 That is the displayed when you run the program. The default selected item is
Item Table
.
ImageBox02 When you clicked the
down arrow top right, all items will be shown.
ImageBox03 This is what I want to happen. I just manually scroll to display the
Item Table
.
Note
This is same as a combobox control.
Items Creation
Dim pnl As New Panel
pnl.Padding = New Padding(3, 2, 0, 0)
pnl.Height = 18
pnl.Tag = node
AddHandler pnl.Click, AddressOf ControlList_Click
AddHandler pnl.MouseEnter, AddressOf ControlList_MouseEnter
pnlControlList.Controls.Add(pnl)
Dim lbl2 As New Label
lbl2.Text = " " & controlStr
lbl2.AutoSize = True
lbl2.Dock = DockStyle.Left
lbl2.Tag = fieldName & "_" & controlStr
AddHandler lbl2.Click, AddressOf ControlList_Click
AddHandler lbl2.MouseEnter, AddressOf ControlList_MouseEnter
pnl.Controls.Add(lbl2)
Dim lbl1 As New Label
lbl1.Text = fieldName
lbl1.AutoSize = True
lbl1.Dock = DockStyle.Left
lbl1.Font = New Font(lblControlListName.Font.FontFamily, lblControlListName.Font.Size, FontStyle.Bold)
lbl1.Tag = fieldName & "_" & controlStr
AddHandler lbl1.Click, AddressOf ControlList_Click
AddHandler lbl1.MouseEnter, AddressOf ControlList_MouseEnter
pnl.Controls.Add(lbl1)
Handlers of some controls
#Region "DROPDOWN LIST"
Private Sub picControlListView_Click(sender As Object, e As EventArgs) Handles picControlListView.Click
If pnlControlList.Visible Then
pnlControlList.Visible = False
Else
pnlControlList.Width = TreeView1.Width
pnlControlList.Visible = True
For Each c As Control In pnlControlList.Controls
If c.Controls.Count > 0 Then
c.Width = pnlControlList.Width - (2 + IIf(pnlControlList.VerticalScroll.Maximum = 100, 0, 23))
End If
Next
txtControlListFocus.Focus()
End If
End Sub
Private Sub pnlControlListView_Click(sender As Object, e As EventArgs) Handles pnlControlListView.Click
picControlListView_Click(sender, e)
End Sub
Private Sub lblControlListName_Click(sender As Object, e As EventArgs) Handles lblControlListName.Click
picControlListView_Click(sender, e)
End Sub
Private Sub lblControlListType_Click(sender As Object, e As EventArgs) Handles lblControlListType.Click
picControlListView_Click(sender, e)
End Sub
Private Sub txtControlListFocus_LostFocus(sender As Object, e As EventArgs) Handles txtControlListFocus.LostFocus
pnlControlList.Visible = False
End Sub
#End Region
What I have tried:
This is what I found in google.
I tried
pnlControlList.ScrollControlIntoView(childPanel)
but instead of panel getting focus the parent control puts a huge margin/white space above the childs.
Please see this image.[
^]