Как изменить высоту элементов в ListBox в powershell? - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь установить высоту элементов равной высоте ListBox.Другими словами, только один элемент должен быть видимым в ListBox.В данный момент видны два элемента.

enter image description here

Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.Application]::EnableVisualStyles()

# $OwnerDrawVariable = [Windows.Forms.DrawMode]::OwnerDrawVariable
# $OwnerDrawFixed = [Windows.Forms.DrawMode]::OwnerDrawFixed

$form                            = New-Object Windows.Forms.Form
$form.ClientSize                 = '400,400'
$form.text                       = "Form"
$form.TopMost                    = $false

$listBox                = New-Object Windows.Forms.ListBox
$listBox.text           = "listBox"
$listBox.width          = 80
$listBox.height         = 30
$listBox.location       = New-Object Drawing.Point(70,10)
# $listBox.IntegralHeight = $false
# $listBox.DrawMode     = $OwnerDrawVariable
$listBox.ItemHeight     = 30

@('1','2','3') | ForEach-Object {[void] $listBox.Items.Add($_)}

$form.controls.AddRange(@($listBox))

[void]$form.ShowDialog()

Я пытался изменить свойство DrawMode, а также IntegralHeight безрезультатно,Любой совет?

1 Ответ

1 голос
/ 28 июня 2019

Как видно из названия значения, [DrawMode]::OwnerDrawFixed требует, чтобы владелец элемента управления (это вы!) Явно рисовал элементы на экране.

Это можно сделать, добавив обработчик событий в свойство события DrawItem:

$listBox.add_DrawItem({
    param(
        [object]$sender,
        [System.Windows.Forms.DrawItemEventArgs]$eargs
    )

    $eargs.DrawBackground()

    $eargs.Graphics.DrawString($listBox.Items[$eargs.Index].ToString(), $eargs.Font, [System.Drawing.Brushes]::Black, $eargs.Bounds.Left, $eargs.Bounds.Top)
    $eargs.DrawFocusRectangle()
})

$eargs.Font наследуется от $listbox.Font, поэтому измените его, если хотите, чтобы нарисованные строки были также больше:

$listBox.Font = [System.Drawing.Font]::new($listBox.Font.FontFamily.Name, 18)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...