Çoklu Seçim Liste Kutuları

Özel Windows PowerShell form içinde çoklu seçim listesi kutusu denetimi oluşturmak için Windows PowerShell 3.0 ve sonraki Windows kullanın.

Birden çok seçime izin verecek liste kutusu denetimleri oluşturma

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 = 'Data Entry Form'
$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 make a selection from the list below:'
$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.SelectionMode = 'MultiExtended'

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

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

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $listBox.SelectedItems
    $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şlanabilirsiniz boş bir form veya pencere sağlar.

$form = New-Object System.Windows.Forms.Form

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 = 'Data Entry Form'
$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.Size(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 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.

$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 make a selection from the list below:'
$form.Controls.Add($label)

Kullanıcıların etiket metninde tanımlarınızı sağlayan denetimi (bu durumda bir liste kutusu) ekleyin. Metin kutularının yanı sıra başka birçok denetim de uygulayabilirsiniz; 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)

Kullanıcıların listeden birden çok değer seçmesine izin vermek istediğiniz aşağıdaki şekilde belirtebilirsiniz.

$listBox.SelectionMode = 'MultiExtended'

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

[void] $listBox.Items.Add('Item 1')
[void] $listBox.Items.Add('Item 2')
[void] $listBox.Items.Add('Item 3')
[void] $listBox.Items.Add('Item 4')
[void] $listBox.Items.Add('Item 5')

Liste kutusu denetimi için en yüksek yüksekliği belirtin.

$listBox.Height = 70

Liste kutusu denetimi formunuza ekleyin ve form Windows diğer pencerelerin ve iletişim kutularının üzerinde açılmasını talimatını ekleyin.

$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 veya daha fazla seçenek seçtikten sonra formla ne yapacaklarını ister ve ardından Tamam düğmesine tıklayın veya Enter tuşuna basın.

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

Ayrıca Bkz.