Aracılığıyla paylaş


Çoklu seçim liste kutuları

Bu örnek yalnızca Windows platformları için geçerlidir.

Özel bir Windows Formunda çoklu seçim liste kutusu denetimi oluşturmak için Windows PowerShell 3.0 ve sonraki sürümleri kullanın.

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

Aşağıdakini kopyalayıp Windows PowerShell ISE'ye yapıştırın ve powershell betiği (.ps1) dosyası olarak kaydedin.

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 .NET Framework sınıfı yüklenerek başlar: System.Drawing ve System.Windows.Forms. Ardından System.Windows.Forms.Form .NET Framework sınıfının yeni bir örneğini başlatırsınız. Bu, denetim eklemeye başlayabileceğiniz boş bir form veya pencere sağlar.

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

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

  • Metin. Bu, pencerenin başlığı olur.
  • Boyut. Bu, formun piksel cinsinden boyutudur. Yukarıdaki betik, 300 piksel genişliğinde ve 200 piksel uzunluğunda bir form oluşturur.
  • Başlangıç Pozisyonu. Bu isteğe bağlı özellik, önceki betikte CenterScreen olarak ayarlanır. Bu özelliği eklemezseniz, Form açıldığında Windows bir konum seçer. StartingPosition'ı CenterScreen olarak ayarlayarak, formu her yüklendiğinde otomatik olarak ekranın ortasında görüntülersiniz.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Ardından, formunuz 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ı belirlemek için önceden tanımlanmış Windows Forms türlerini 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şturursunuz. İ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, pencerenizde kullanıcıların sağlamasını istediğiniz bilgileri açıklayan etiket metni sağlayın.

$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 metninizde açıkladığınız bilgileri sağlamasına olanak tanıyan denetimi (bu örnekte liste kutusu) ekleyin. Metin kutularının yanı sıra uygulayabileceğiniz birçok denetim daha 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)

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

$listBox.SelectionMode = 'MultiExtended'

Sonraki bölümde, liste kutusunun kullanıcılara görüntülenmesini 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 denetiminin en yüksek yüksekliğini belirtin.

$listBox.Height = 70

Liste kutusu denetimini formunuza ekleyin ve Windows'a formu açıldığında diğer pencerelerin ve iletişim kutularının üzerinde açmasını sağlayın.

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

Formu Windows'da görüntülemek için aşağıdaki kod satırını ekleyin.

$result = $form.ShowDialog()

Son olarak, blok içindeki if kod, kullanıcılar liste kutusundan bir veya daha fazla seçenek seçtikten sonra Windows'a formla ne yapacağını 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.