【问题标题】:Why doesn't my GUI show 3 separate panels?为什么我的 GUI 不显示 3 个单独的面板?
【发布时间】:2014-06-14 20:15:23
【问题描述】:

我基本上是在尝试在 powershell 中编写一个小型 GUI,它具有三个带有边框的独立面板,以指示一个面板的开始和结束位置。但是,这些面板似乎只是直接构建在彼此之上。

非常感谢您在这方面的任何帮助!

$form = New-Object System.Windows.Forms.Form
$form.Height = 350
$form.Width = 600

function buildMainPanel {

   $panel = New-Object System.Windows.Forms.Panel
   $Script:tableLayoutPanel = New-Object System.Windows.Forms.TableLayoutPanel
   $tableLayoutPanel.RowCount = 3

   $pan1 = buildEmptyPanel
   $pan2 = buildEmptyPanel
   $pan3 = buildEmptyPanel

   $tableLayoutPanel.Controls.Add($pan1)
   $tableLayoutPanel.Controls.Add($pan2)
   $tableLayoutPanel.Controls.Add($pan3)

   $panel.Controls.Add($tableLayoutPanel)

   return $panel
}

function buildEmptyPanel {

   $panel = New-Object System.Windows.Forms.Panel
   $panel.BorderStyle = [System.Windows.Forms.BorderStyle]::FixedSingle

   return $panel
}

$mainPanel = buildMainPanel

$form.Controls.Add($mainPanel)
$form.ShowDialog()

【问题讨论】:

    标签: .net powershell border panel


    【解决方案1】:

    WinForms 中的自动布局方式并不像 WPF 中那样。在 WinForms 中有锚定和停靠。您可以尝试对接,看看是否可行。如果不是,您将不得不自己管理面板的位置和大小。

    $pan1.Dock = 'Left'
    $pan2.Dock = 'Fill'
    $pan3.Dock = 'Right'
    

    【讨论】:

    • 我在使用对接之前已经让它工作了,但我不记得我做了什么。你对我将在哪里实施对接有什么建议吗?我尝试了每个对象,但没有成功。
    • 您可以将第一个面板设置为停靠在左侧,将最后一个面板设置为停靠在右侧,将中间面板设置为填充。 $pan1.Dock = '左';$pan2.Dock = '填充';$pan3.Dock = '右'。
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2014-04-12
    • 2019-10-10
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多