Özel bir giriş kutusu oluşturma

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

Windows PowerShell 3.0 ve sonraki sürümlerde Microsoft .NET Framework form oluşturma özelliklerini kullanarak grafik özel giriş kutusu betiği oluşturma.

Özel, grafik giriş kutusu 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 enter the information in the space below:'
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    $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.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ş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 enter the information in the space 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 bir metin 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ı.

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

Pencereyi diğer açık pencerelerin ve iletişim kutularının üzerinde açmaya zorlamak için En üstteki özelliği $true olarak ayarlayın.

$form.Topmost = $true

Ardından, formu etkinleştirmek için bu kod satırını ekleyin ve odağı oluşturduğunuz metin kutusuna ayarlayın.

$form.Add_Shown({$textBox.Select()})

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

$result = $form.ShowDialog()

Son olarak, If bloğunun içindeki kod, kullanıcılar metin kutusuna metin sağladıktan sonra Windows'a formla ne yapacağını açıklar ve ardından Tamam düğmesine tıklayın veya Enter tuşuna basın.

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

Ayrıca bkz.