简体   繁体   English

为什么设置分离器的位置如此困难?

[英]Why is it so difficult to set the location of Splitter?

The content of the codes given below; 下面给出的代码内容; 3 panels and 2 Splitter are required. 需要3个面板和2个拆分器。 However, the 2nd splitter (Green) must be located between the gray and brown panel. 但是,第二分离器(绿色)必须位于灰色和棕色面板之间。 But not in the right place. 但在不正确的地方。 Are there any suggestions? 有什么建议吗? Thanks. 谢谢。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Show()

        Dim tmpSplitter As Splitter
        Dim tmpPanel As Panel
        Dim MainPanel As Panel

        ' This is main panel
        '
        MainPanel = New Panel
        With MainPanel
            .Name = "MainPanel"
            .Dock = DockStyle.Fill
            .BackColor = Color.LightGray
            .BorderStyle = BorderStyle.Fixed3D
            .Visible = True
        End With
        Me.Controls.Add(MainPanel)

        ' 1: First Top Panel and Splitter 
        '
        tmpPanel = New Panel
        With tmpPanel
            .Name = "Panel1"
            .Dock = DockStyle.Top
            .BackColor = Color.Red
            .Visible = True
        End With

        tmpSplitter = New Splitter
        With tmpSplitter
            .Name = "Split1"
            .Dock = DockStyle.Top
            .BackColor = Color.Blue
            .Cursor = Cursors.HSplit
        End With

        Me.Controls.Add(tmpSplitter)
        Me.Controls.Add(tmpPanel)


        ' 2: Second Panel added to the left side of the main panel
        '
        MainPanel.Dock = DockStyle.Right
        MainPanel.Size = New Size(MainPanel.Width * 0.5, MainPanel.Height)

        Dim btn As New Button
        btn.Size = New Size(10, 50)
        btn.Location = New Point(MainPanel.Location.X - btn.Width, MainPanel.Location.Y)
        Me.Controls.Add(btn)


        tmpPanel = New Panel
        With tmpPanel
            .Size = New Size(10, MainPanel.Height)
            .Location = New Point(MainPanel.Location.X - .Width - 5, MainPanel.Location.Y)
            .Name = "Panel2"
            .Dock = DockStyle.Fill
            .BackColor = Color.Brown
        End With

        ' THIS SPLITTER IS NOT IN THE RIGHT PLACE. Must be between brown and gray panel
        '
        tmpSplitter = New Splitter
        With tmpSplitter
            .Size = New Size(5, MainPanel.Height)
            .Location = New Point(MainPanel.Location.X - .Width, MainPanel.Location.Y)
            .Name = "Split2"
            .Dock = DockStyle.Right
            .BackColor = Color.Green
            .Cursor = Cursors.VSplit
        End With

        Me.Controls.Add(tmpSplitter)
        Me.Controls.Add(tmpPanel)

    End Sub
End Class

a little more research and try to solve the solution 多做一些研究并尝试解决该问题

Me.Controls.SetChildIndex (tmpSplitter, 0)

is enough to write on the last line. 足以在最后一行上写。 Thank you for your contributions. 感谢您的贡献。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM