Powershell列表框项目与项目文本的不同值?

时间:2017-10-16 18:00:25

标签: winforms powershell listbox

我已经找到了在C#,HTML和Xojo中执行此操作的方法,但不是Powershell / Windows Forms ...

我创建了一个列表框供用户选择我们使用的软件的位置代码...而软件安装需要特定代码(01-07),我想向用户显示列表框UI中的实际位置。这可能吗?像$ listBox.Items.Add(Value =" 01" Text =" NYC")?

请参阅下面的代码:

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20) 
$label.Size = New-Object System.Drawing.Size(280,20) 
$label.Text = "Please select a Location Code:"
$form.Controls.Add($label) 

$listBox = New-Object System.Windows.Forms.ListBox 
$listBox.Location = New-Object System.Drawing.Point(10,40) 
$listBox.Size = New-Object System.Drawing.Size(150,20) 
$listBox.Height = 140

[void] $listBox.Items.Add("01")
[void] $listBox.Items.Add("02")
[void] $listBox.Items.Add("03")
[void] $listBox.Items.Add("04")
[void] $listBox.Items.Add("06")
[void] $listBox.Items.Add("07")

$form1.Controls.Add($listBox) 

$form1.Topmost = $True

$result1 = $form1.ShowDialog()

if ($result1 -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Server = $listBox.SelectedItem
    $Server
}

1 个答案:

答案 0 :(得分:0)

如果没有查看列表框如何运行的内部工作方式,您可以创建一个哈希表来将友好名称转换为软件安装的数字。

$locHash = @{
    'NYC' = '01'
    'Chicago' = '02'
    'LA' = '03'
    'Seattle' = '04'
    'Orlando' = '05'
    'Dallas' = '06'
}

然后,您可以将友好名称添加到列表框中,并在安装软件时引用哈希表。

[void] $listBox.Items.Add("NYC")
[void] $listBox.Items.Add("Chicago")
[void] $listBox.Items.Add("LA")
[void] $listBox.Items.Add("Seattle")
[void] $listBox.Items.Add("Orlando")
[void] $listBox.Items.Add("Dallas")
$form1.Controls.Add($listBox) 

$form1.Topmost = $True

$result1 = $form1.ShowDialog()

if ($result1 -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Server = $locHash[$listBox.SelectedItem]
    $Server
}