Naja!
Wenn Du die Panels per Code positionieren willst (Locate, Size),
dann mußt Du das im Resize/End-Ereignis der Form erledigen.
Wenn Du beim Überfahren eines Panels mit der Maus dieses Panel
sofort maximierst, wie willst Du an die anderen Panels wieder
herankommen?
Das solltest Du besser mit einem MausClick erledigen.
Irgend so was ....
Public Class FrmQuad
Private scParent As New SplitContainer With
{.Parent = Me, .Orientation = Orientation.Vertical,
.Dock = DockStyle.Fill, .SplitterWidth = 4}
Private btnSelect As New List(Of Button)
Private WithEvents scHorizontal As New SplitContainer With
{.Parent = scParent.Panel2, .Orientation = Orientation.Horizontal,
.Dock = DockStyle.Fill, .SplitterWidth = 4}
Private WithEvents scVerticaltop As New SplitContainer With
{.Parent = scHorizontal.Panel1, .Orientation = Orientation.Vertical,
.Dock = DockStyle.Fill, .SplitterWidth = 4}
Private WithEvents scVerticalBottom As New SplitContainer With
{.Parent = scHorizontal.Panel2, .Orientation = Orientation.Vertical,
.Dock = DockStyle.Fill, .SplitterWidth = 4}
Dim bl As New List(Of WebBrowser)
Private Sub FrmQuad_Load(sender As Object, _
e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True
scParent.SplitterDistance = 20
scParent.IsSplitterFixed = True
setsplitterhalfwidth(scHorizontal)
setsplitterhalfwidth(scVerticaltop)
setsplitterhalfwidth(scVerticalBottom)
With btnSelect
.Add(New Button With _
{.Parent = scParent.Panel1, .Width = 10, .Height = 10})
.Add(New Button With _
{.Parent = scParent.Panel1, .Width = 10, _
.Height = 10, .Left = 11})
.Add(New Button With _
{.Parent = scParent.Panel1, .Width = 10, _
.Height = 10, .Top = 11})
.Add(New Button With
{.Parent = scParent.Panel1, .Width = 10, .Height = 10, _
.Left = 11, .Top = 11})
.Add(New Button With _
{.Parent = scParent.Panel1, .Width = 20, .Height = 20, _
.Top = 21})
End With
For i As Integer = 0 To 4
AddHandler btnSelect(i).Click, AddressOf btnSelect_Click
Next i
With bl
.Add(New WebBrowser With
{.Parent = scVerticaltop.Panel1, .Dock = DockStyle.Fill})
.Add(New WebBrowser With
{.Parent = scVerticaltop.Panel2, .Dock = DockStyle.Fill})
.Add(New WebBrowser With
{.Parent = scVerticalBottom.Panel1, .Dock = DockStyle.Fill})
.Add(New WebBrowser With
{.Parent = scVerticalBottom.Panel2, .Dock = DockStyle.Fill})
End With
bl(0).Navigate("http://www.bing.com")
bl(1).Navigate("http://www.google.com")
bl(2).Navigate("https://www.duckduckgo.com")
bl(3).Navigate("http://www.yahoo.com")
End Sub
Private Sub btnSelect_Click(sender As Object, e As EventArgs)
Dim t As Integer = DirectCast(sender, Button).Top
Dim l As Integer = DirectCast(sender, Button).Left
If t > 20 Then
scHorizontal.Panel1Collapsed = False
scHorizontal.Panel2Collapsed = False
scVerticalBottom.Panel1Collapsed = False
scVerticalBottom.Panel2Collapsed = False
scVerticaltop.Panel1Collapsed = False
scVerticaltop.Panel2Collapsed = False
Exit Sub
End If
If t = 0 And l = 0 Then _
scHorizontal.Panel2Collapsed = True : _
scVerticaltop.Panel2Collapsed = True
If t = 0 And l > 0 Then _
scHorizontal.Panel2Collapsed = True : _
scVerticaltop.Panel1Collapsed = True
If t > 0 And l = 0 Then _
scHorizontal.Panel1Collapsed = True : _
scVerticalBottom.Panel2Collapsed = True
If t > 0 And l > 0 Then _
scHorizontal.Panel1Collapsed = True : _
scVerticalBottom.Panel1Collapsed = True
End Sub
Private Sub bl_mousemove(ByVal sender As Object, e As MouseEventArgs)
MsgBox(DirectCast(sender, Button).Text)
End Sub
Public Sub setsplitterhalfwidth(sc As SplitContainer)
sc.SplitterDistance = sc.Width \ 2
End Sub
End Class
Beitrag wurde zuletzt am 15.02.18 um 22:20:26 editiert. |