Bir Liste Kutusundan Öğe Seçme

Kullanıcıların Windows PowerShell bir liste kutusu denetiminden öğe seçmelerini sağlayan bir iletişim kutusu oluşturmak için Windows PowerShell 3.0 ve sonraki sürümler'i kullanın.

Liste kutusu denetimi oluşturma ve bu denetimden öğeleri seçme

Aşağıdakini kopyalayıp ISE'Windows PowerShell yapıştırın ve ardından bunu bir Windows PowerShell betiği (.ps1).

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$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 computer:'
$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(260,20)
$listBox.Height = 80

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

$form.Controls.Add($listBox)

$form.Topmost = $true

$result = $form.ShowDialog()

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

Betik iki sınıf yük .NET Framework başlar: System.Drawing ve System.Windows. Formlar. Ardından System..NET Framework sınıfının yeni bir örneğini Windows. Forms.Form; bu, denetim eklemeye başlandırabilirsiniz boş bir form veya pencere sağlar.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

Form sınıfının bir örneğini oluşturdukta, değerleri bu sınıfın üç özelliğine attayabilirsiniz.

  • Metin. Bu, pencerenin başlığı olur.

  • Boyutu. Bu, piksel cinsinden formun boyutudur. Yukarıdaki betik, 300 piksel genişliğinde ve 200 piksel uzunluğunda bir form oluşturur.

  • StartingPosition. Bu isteğe bağlı özellik, önceki betikte CenterScreen olarak ayarlanır. Bu özelliği ekley konumunuz Windows form açıldığında bir konum seçer. StartingPosition'i CenterScreen olarak ayarlayarak, formu her yükleniyorsa ekranın ortasında otomatik olarak görüntülersiniz.

$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Ardından form için bir Tamam düğmesi oluşturun. Tamam düğmesinin boyutunu ve davranışını belirtin. Bu örnekte düğme konumu formun üst kenarından 120 piksel ve sol kenardan 75 pikseldir. Düğme yüksekliği 23 piksel, düğme uzunluğu ise 75 pikseldir. Betik, düğme davranışlarını Windows form türleri için önceden tanımlanmış formlar kullanır.

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

Benzer şekilde, bir İptal düğmesi oluşturabilirsiniz. İptal düğmesi üstten 120 piksel, pencerenin sol kenarından ise 150 pikseldir.

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

Ardından, pencerenize kullanıcıların sağlamalarını istediğiniz bilgileri açıklayan etiket metnini girin. Bu durumda, kullanıcıların bir bilgisayar seçmesi gerekir.

$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 computer:'
$form.Controls.Add($label)

Kullanıcıların etiket metninde tanımlarınızı sağlayan denetimi (bu durumda bir liste kutusu) ekleyin. Liste kutularının yanı sıra uygulayabilecek diğer birçok denetim vardır; Daha fazla denetim için bkz. System.Windows. Forms Ad Alanı.

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

Sonraki bölümde, liste kutusunun kullanıcılara görüntülemesi istediğiniz değerleri belirtirsiniz.

Not

Bu betik tarafından oluşturulan liste kutusu yalnızca bir seçime izin verir. Birden çok seçime izin veren bir liste kutusu denetimi oluşturmak için SelectionMode özelliği için aşağıdakine benzer bir değer belirtin: $listBox.SelectionMode = 'MultiExtended' . Daha fazla bilgi için bkz. Çoklu Seçim Liste Kutuları.

[void] $listBox.Items.Add('atl-dc-001')
[void] $listBox.Items.Add('atl-dc-002')
[void] $listBox.Items.Add('atl-dc-003')
[void] $listBox.Items.Add('atl-dc-004')
[void] $listBox.Items.Add('atl-dc-005')
[void] $listBox.Items.Add('atl-dc-006')
[void] $listBox.Items.Add('atl-dc-007')

Liste kutusu denetimlerini formunuza ekleyin ve Windows diğer pencerelerin ve iletişim kutularının üzerinde açması için bunu yazın.

$form.Controls.Add($listBox)
$form.Topmost = $true

Formu veri kaynağında görüntülemek için aşağıdaki kod Windows.

$result = $form.ShowDialog()

Son olarak, If bloğu içindeki kod Windows kullanıcılar liste kutusundan bir seçenek belirleyin ve tamam düğmesine tıklar veya Enter tuşuna basın.

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

Ayrıca Bkz.