2017-10-16 9 views
0

J'ai trouvé des façons de le faire en C#, HTML et Xojo, mais pas Powershell/Windows Forms ...Powershell listbox article valeur différente du texte de l'article?

J'ai créé une liste pour que les utilisateurs puissent sélectionner un code d'emplacement pour un logiciel que nous utilisons ... l'installation du logiciel nécessite le code spécifique (01-07), je voudrais montrer aux utilisateurs l'emplacement réel dans l'interface utilisateur Listbox. Est-ce possible? Quelque chose comme $ listBox.Items.Add (Value = "01" Text = "NYC")?

Voir ci-dessous pour le code:

$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 
} 

Répondre

0

Court de regarder dans le fonctionnement interne de comment fonctionne listbox, vous pouvez simplement faire une table de hachage pour convertir les noms sympathiques aux numéros pour l'installation du logiciel.

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

Ensuite, vous pouvez ajouter les noms sympathiques à la zone de liste et faire référence à tout le Hashtable quand vous allez installer le logiciel.

[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 
} 
+0

Genius. Cela a fonctionné à merveille. Merci beaucoup!! Mon Google-Fu m'a laissé les mains vides. –