【问题标题】:.Bottom is read-only.Bottom 是只读的
【发布时间】:2017-07-31 22:42:01
【问题描述】:

我正在编写一个 PowerShell 脚本,该脚本使用停靠的表单和面板。我能够很好地创建表单和面板,但在运行时使用$inputbox.Bottom = $form.Height - 215 控制大小来调整列表框大小时遇到​​问题,但我收到错误

“底部”是一个只读属性。

仅仅在面板中使用Fill 将不起作用,因为我在列表框上方和下方都有按钮。这是我的代码示例:

[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”)

$form.ResizeEnd
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(1040,459)
$form.KeyPreview = $true
$form.StartPosition = ‘centerscreen’
$form.BackColor = 'MidnightBlue'
$form.Add_KeyDown({if($_.KeyCode -eq "Escape"){$form.Close()}})
$form.Text = "Dialog Box 2.0" 
$form.Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell_ise.exe")

$buttonPanel3 = New-Object Windows.Forms.Panel
$buttonPanel3.Size = New-Object Drawing.Size @(290,70)
$buttonPanel3.Dock = "left"
$buttonPanel3.BackColor = 'Blue'

$inputbox = New-Object System.Windows.Forms.ListBox
$inputbox.BorderStyle = 'NONE'
$inputbox.Font = New-Object System.Drawing.Font(“segoe UI”,9)
$inputbox.SelectionMode = "MultiExtended"
$inputbox.Left = 10
$inputbox.Top = 105
$inputbox.Width = 200
$inputbox.Bottom = $form.Height -215
$inputbox.Height = $form.Height -215

$buttonPanel3.Controls.Add($inputbox)
$form.Controls.Add($buttonPanel3)
$form.ShowDialog()

如果有人可以提供一些在您调整表单大小时调整大小(主要与垂直扩展有关)的列表框的示例代码,那就太好了。

【问题讨论】:

  • 编辑Height 属性,而不是Bottom 属性
  • 当我编辑 height 属性时,它会正确初始化,但在程序运行时不会修改。
  • 您是否尝试手动操作(即通过拖动控件的边框)?我没有看到任何尝试以编程方式调整任何控件的大小同时显示表单
  • 请举例说明如何做到这一点。
  • 怎么做什么?您是在寻找用户可调整大小的列表框控件,还是寻找如何以编程方式调整控件大小的示例?

标签: winforms powershell listbox resize


【解决方案1】:

我最终完全重新排列了我的表单并使用了填充方法,但我想介绍一下关于调整表单大小的花絮,因为这是真正的问题。

表单的调整大小处理程序是$form.Add_Resize({})。在括号内,我可以根据需要修改高度和宽度属性。在这种情况下,我只想要 height 属性,所以代码如下:

[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”)

$form.ResizeEnd
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(1040,459)
$form.KeyPreview = $true
$form.StartPosition = ‘centerscreen’
$form.BackColor = 'MidnightBlue'
$form.Add_KeyDown({if($_.KeyCode -eq "Escape"){$form.Close()}})
$form.Text = "Dialog Box 2.0" 
$form.Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell_ise.exe")
$form.Add_Resize({
    $inputbox.Height = $form.Height -215
})

$buttonPanel3 = New-Object Windows.Forms.Panel
$buttonPanel3.Size = New-Object Drawing.Size @(290,70)
$buttonPanel3.Dock = "left"
$buttonPanel3.BackColor = 'Blue'

$inputbox = New-Object System.Windows.Forms.ListBox
$inputbox.BorderStyle = 'NONE'
$inputbox.Font = New-Object System.Drawing.Font(“segoe UI”,9)
$inputbox.SelectionMode = "MultiExtended"
$inputbox.Left = 10
$inputbox.Top = 105
$inputbox.Width = 200
$inputbox.Height = $form.Height -215

$buttonPanel3.Controls.Add($inputbox)
$form.Controls.Add($buttonPanel3)
$form.ShowDialog()

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2020-08-07
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    相关资源
    最近更新 更多