更改面板上对象的位置

时间:2016-09-14 10:36:07

标签: vb.net winforms powershell

我有一个有两个分组框的表单。每个组框都有一个主面板,其中附加了一些控件。但是,当我尝试更改其中一个面板上的对象位置时,该对象不会移动。

如何更改附加到面板的对象的位置?

填写表格:

Function Show-GUIUserJoin
{
    #---Form

        $Form                 = New-Object System.Windows.Forms.Form
        $Form.Size            = New-Object System.Drawing.Size(436,350)
        $Form.Font            = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
        #$Form.Icon            = New-Object System.Drawing.Icon($ScriptPP + "Script\Icon.ico")
        $Form.FormBorderStyle = "FixedSingle"    
        $Form.MaximizeBox     = $False
        $Form.Text            = $ScriptTitle
        $Form.StartPosition   = "CenterScreen"

    #---GroupBox Join

        $GBUserJoin          = New-Object System.Windows.Forms.GroupBox
        $GBUserJoin.Location = New-Object System.Drawing.Size(12,5)
        $GBUserJoin.Size     = New-Object System.Drawing.Size(198,200)
        $GBUserJoin.Font     = New-Object System.Drawing.Font("Consolas",8,0,3,1)
        $GBUserJoin.Text     = "   -"

        #---Panel

            $PUserJoin          = New-Object System.Windows.Forms.FlowLayoutPanel
            $PUserJoin.Location = New-Object System.Drawing.Size(8,16)
            $PUserJoin.Size     = New-Object System.Drawing.Size(179,250)
            $PUserJoin.Font     = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
            #$PUserJoin.Enabled  = $False

            #---Select

                #---Radiobutton

                    $RBSelectJoin          = New-Object System.Windows.Forms.RadioButton
                    $RBSelectJoin.Location = New-Object System.Drawing.Size(12,0)
                    $RBSelectJoin.Size     = New-Object System.Drawing.Size(12,12)

                #---Label

                    $LSelectJoin          = New-Object System.Windows.Forms.Label
                    $LSelectJoin.Location = New-Object System.Drawing.Size(26,-3)
                    $LSelectJoin.Font     = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
                    $LSelectJoin.AutoSize = $True
                    $LSelectJoin.Text     = "Eintritt"

            #---Template

                #---Label

                    $LTemplate          = New-Object System.Windows.Forms.Label
                    $LTemplate.Location = New-Object System.Drawing.Size(8,20)
                    $LTemplate.AutoSize = $True
                    $LTemplate.Text     = "Vorlage"

                #---Combobox

                    $CBTemplate               = New-Object System.Windows.Forms.ComboBox
                    $CBTemplate.Location      = New-Object System.Drawing.Size(10,41)
                    $CBTemplate.Size          = New-Object System.Drawing.Size(176)
                    $CBTemplate.FlatStyle     = "PopUp"
                    $CBTemplate.DropDownStyle = 2

            #---Work Location

                #---Label

                    $LWorkLocation          = New-Object System.Windows.Forms.Label
                    $LWorkLocation.Location = New-Object System.Drawing.Size(8,250)
                    $LWorkLocation.AutoSize = $True
                    $LWorkLocation.Text     = "Arbeitsort"

                #---Combobox

                    $CBWorkLocation               = New-Object System.Windows.Forms.ComboBox
                    $CBWorkLocation.Location      = New-Object System.Drawing.Size(10,150)
                    $CBWorkLocation.Size          = New-Object System.Drawing.Size(176)
                    $CBWorkLocation.FlatStyle     = "PopUp"
                    $CBWorkLocation.DropDownStyle = 2

    #---GroupBox Resigination

        $GBUserResignation          = New-Object System.Windows.Forms.GroupBox
        $GBUserResignation.Location = New-Object System.Drawing.Size(222,5)
        $GBUserResignation.Size     = New-Object System.Drawing.Size(197,125)
        $GBUserResignation.Font     = New-Object System.Drawing.Font("Consolas",8,0,3,1)
        $GBUserResignation.Text     = "   -"

        #---Panel

            $PUserResignation          = New-Object System.Windows.Forms.FlowLayoutPanel
            $PUserResignation.Location = New-Object System.Drawing.Size(8,16)
            $PUserResignation.Size     = New-Object System.Drawing.Size(181,95)
            $PUserResignation.Font     = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
            #$PUserResignation.Enabled  = $False

            #---Select

                #---Radiobutton

                    $RBSelectResignation          = New-Object System.Windows.Forms.RadioButton
                    $RBSelectResignation.Location = New-Object System.Drawing.Size(12,0)
                    $RBSelectResignation.Size     = New-Object System.Drawing.Size(12,12)

                #---Label

                    $LSelectResignation          = New-Object System.Windows.Forms.Label
                    $LSelectResignation.Location = New-Object System.Drawing.Size(26,-3)
                    $LSelectResignation.Font     = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
                    $LSelectResignation.AutoSize = $True
                    $LSelectResignation.Text     = "Austritt"

            #---Coworker

                #---Label

                    $LCW          = New-Object System.Windows.Forms.Label
                    $LCW.Location = New-Object System.Drawing.Size(8,20)
                    $LCW.AutoSize = $True
                    $LCW.Text     = "Mitarbeiter"

                #---Combobox

                    $CBCW               = New-Object System.Windows.Forms.ComboBox
                    $CBCW.Location      = New-Object System.Drawing.Size(10,41)
                    $CBCW.Size          = New-Object System.Drawing.Size(176)
                    $CBCW.FlatStyle     = "PopUp"
                    $CBCW.DropDownStyle = 2

            #---Date of resignation

                #---Label

                    $LDOR          = New-Object System.Windows.Forms.Label
                    $LDOR.Location = New-Object System.Drawing.Size(8,70)
                    $LDOR.AutoSize = $True
                    $LDOR.Text     = "Austrittsdatum"

                #---Date picker

                    #---Textbox (for displaying choosen date)

                        $TBDOR             = New-Object System.Windows.Forms.TextBox
                        $TBDOR.Location    = New-Object System.Drawing.Size(10,91)
                        $TBDOR.Size        = New-Object System.Drawing.Size(146)
                        $TBDOR.BorderStyle = "FixedSingle"
                        $TBDOR.Enabled     = $False

                    #---Picker

                        $DPDOR                 = New-Object System.Windows.Forms.Form
                        $DPDOR.Size            = New-Object System.Drawing.Size(176,220) 
                        $DPDOR.Font            = New-Object System.Drawing.Font("Segoe UI",9,0,3,1)
                        $DPDOR.FormBorderStyle = "FixedToolWindow"
                        $DPDOR.StartPosition   = "Manual"
                        $DPDOR.Topmost         = $True
                        $DPDOR.ControlBox      = $False


                    #---Calendar

                        $DPDORCal                   = New-Object System.Windows.Forms.MonthCalendar
                        $DPDORCal.Location          = New-Object System.Drawing.Size(5,5)
                        $DPDORCal.ShowTodayCircle   = $False
                        $DPDORCal.MaxSelectionCount = 1

                    #---Buttons

                        #---Open Date Picker

                            $BOpenDP           = New-Object System.Windows.Forms.Button
                            $BOpenDP.Location  = New-Object System.Drawing.Size(163,91)
                            $BOpenDP.Size      = New-Object System.Drawing.Size(23,23)
                            $BOpenDP.FlatAppearance.BorderSize = 0
                            $BOpenDP.FlatStyle = "Flat"
                            #$BOpenDP.Image = [System.Drawing.Image]::FromFile($ScriptPP + "Images\DatePicker.png")

    #---Buttons

        #---Form

            #---Confirm

                $BFormConfirm           = New-Object System.Windows.Forms.Button
                $BFormConfirm.Location  = New-Object System.Drawing.Size(273,250)
                $BFormConfirm.Size      = New-Object System.Drawing.Size(69,23)
                $BFormConfirm.FlatStyle = "PopUp"
                $BFormConfirm.Text      = "Confirm"
                $BFormConfirm.Enabled   = $False

            #---Cancel

                $BFormCancel           = New-Object System.Windows.Forms.Button
                $BFormCancel.Location  = New-Object System.Drawing.Size(350,250)
                $BFormCancel.Size      = New-Object System.Drawing.Size(69,23)
                $BFormCancel.FlatStyle = "PopUp"
                $BFormCancel.Text      = "Cancel"

        #---Date Picker

            #---Confirm

                $BDPConfirm           = New-Object System.Windows.Forms.Button
                $BDPConfirm.Location  = New-Object System.Drawing.Point(5,190)
                $BDPConfirm.Size      = New-Object System.Drawing.Size(77,23)
                $BDPConfirm.FlatStyle = "PopUp"
                $BDPConfirm.Text      = "Confirm"

            #---Cancel

                $BDPCancel           = New-Object System.Windows.Forms.Button
                $BDPCancel.Location  = New-Object System.Drawing.Point(92,190)
                $BDPCancel.Size      = New-Object System.Drawing.Size(77,23)
                $BDPCancel.FlatStyle = "PopUp"
                $BDPCancel.Text      = "Cancel"

    #---EventHandling

        #---GroupBox Join

            #---Panel

                #---Select

                    #---Radiobutton

                        $RBSelectJoin_CheckedChanged =
                        {
                            if($RBSelectJoin.Checked -eq $True)
                            {
                                $RBSelectResignation.Checked = $False

                                $PUserResignation.Enabled = $False

                                $PUserJoin.Enabled = $True
                            }

                            else
                            {                    
                                $PUserJoin.Enabled = $False
                            }
                        }

                    #---Label

                        $LSelectJoin_OnClick =
                        {
                            $RBSelectJoin.Checked = $True
                        }

        #---GroupBox Resigination

            #---Panel

                #---Select

                    #---Radiobutton

                        $RBSelectResignation_CheckedChanged =
                        {
                            if($RBSelectResignation.Checked -eq $True)
                            {
                                $RBSelectJoin.Checked = $False

                                $PUserJoin.Enabled = $False

                                $PUserResignation.Enabled = $True
                            }

                            else
                            {                    
                                $PUserResignation.Enabled = $False
                            }
                        }

                    #---Label

                        $LSelectResignation_OnClick =
                        {
                            $RBSelectResignation.Checked = $True
                        }

                #---Date of resignation

                    #---Date picker                    

                        #---Calendar

                            $DPDORCal_DateChanged =
                            {
                                $TBDOR.Text = $DPDORCal.SelectionStart.ToShortDateString()
                            }

    #---Buttons On-Click Actions

        #---GroupBox Resigination

            #---Panel

                #---Date of resignation

                    #---Date picker

                        #---Buttons

                            #---Open Date Picker

                                $BOpenDP_OnClick=
                                {
                                    $TBDOR.Text = $DPDORCal.SelectionStart.ToShortDateString()

                                    $DPDOR.Location = New-Object System.Drawing.Size((3 + $Form.Location.X + $GBUserResignation.Location.X + $TBDOR.Location.X),(21 + $Form.Location.Y + $GBUserResignation.Location.Y + $TBDOR.Location.Y + $TBDOR.Height + 10))

                                    $DPDOR.ShowDialog()
                                }

        #---Form           

            #---Confirm

                $BFormConfirm_OnClick= 
                {

                }

            #---Cancel

                $BFormCancel_OnClick=
                {
                    $Form.Close()
                }

        #---Date Picker

            #---Confirm

                $BDPConfirm_OnClick= 
                {
                    $TBDOR.Text = $DPDORCal.SelectionStart.ToShortDateString()

                    $DPDOR.Close()
                }

            #---Cancel

                $BDPCancel_OnClick=
                {
                    $DPDOR.Close()
                }

    #---Adding Elements to the form

        #---GroupBox Join

            $Form.Controls.Add($GBUserJoin)

            #---Panel

                $GBUserJoin.Controls.Add($PUserJoin)

                #---Select

                    #---Radiobutton

                        $GBUserJoin.Controls.Add($RBSelectJoin)

                        $RBSelectJoin.add_CheckedChanged($RBSelectJoin_CheckedChanged)

                    #---Label

                        $GBUserJoin.Controls.Add($LSelectJoin)

                        $LSelectJoin.add_Click($LSelectJoin_OnClick)

                #---Template

                    #---Label

                        $PUserJoin.Controls.Add($LTemplate)

                    #---Combobox

                        $PUserJoin.Controls.Add($CBTemplate)

                #---Work Location

                    #---Label

                        $PUserJoin.Controls.Add($LWorkLocation)

                    #---Combobox

                        $PUserJoin.Controls.Add($CBWorkLocation)

        #---GroupBox Resigination

            $Form.Controls.Add($GBUserResignation)

            #---Panel

                $GBUserResignation.Controls.Add($PUserResignation)

                #---Select

                    #---Radiobutton

                        $GBUserResignation.Controls.Add($RBSelectResignation)

                        $RBSelectResignation.add_CheckedChanged($RBSelectResignation_CheckedChanged)

                    #---Label

                        $GBUserResignation.Controls.Add($LSelectResignation)

                        $LSelectResignation.add_Click($LSelectResignation_OnClick)

                #---Coworker

                    #---Label

                        $PUserResignation.Controls.Add($LCW)

                    #---Combobox

                        $PUserResignation.Controls.Add($CBCW)

                #---Date of resignation

                    #---Label

                        $PUserResignation.Controls.Add($LDOR)

                    #---Date picker

                        #---Textbox (for displaying choosen date)

                            $PUserResignation.Controls.Add($TBDOR)

                        #---Picker

                            #None

                        #---Calendar

                            $DPDORCal.add_DateChanged($DPDORCal_DateChanged)

                            $DPDOR.Controls.Add($DPDORCal)

                        #---Buttons

                            #---Open Date Picker

                                $PUserResignation.Controls.Add($BOpenDP)

                                $BOpenDP.add_Click($BOpenDP_OnClick)

        #---Buttons

            #---Form

                #---Confirm

                    $Form.Controls.Add($BFormConfirm)

                    $BFormConfirm.add_Click($BFormConfirm_OnClick)

                #---Cancel

                    $Form.Controls.Add($BFormCancel)

                    $BFormCancel.add_Click($BFormCancel_OnClick)

            #---Date Picker

                #---Confirm

                    $DPDOR.Controls.Add($BDPConfirm)

                    $BDPConfirm.add_Click($BDPConfirm_OnClick)

                #---Cancel

                    $DPDOR.Controls.Add($BDPCancel)

                    $BDPCancel.add_Click($BDPCancel_OnClick)

    #---Show form

        $Form.ShowDialog() | Out-Null
}

Show-GUIUserJoin

例如:无论我在$CBWorkLocation.Location = New-Object System.Drawing.Size(10,150)中放置什么价值,其位置都不会改变。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您将UI元素放在FlowLayoutPanel

              |
  |           |
| | |   | |   |
1 2 3 4 5 6 7 8

此类面板中的元素是自动对齐的:

  

表示一个水平或垂直动态布局其内容的面板。

如果要在画布上自由放置元素,请不要使用流布局。