Özel bir giriş kutusu oluşturma


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

Windows PowerShell 3,0 ve sonraki sürümlerdeki Microsoft .NET Framework form oluşturma özelliklerini kullanarak grafiksel bir özel giriş kutusu komut dosyası yazın.

Özel, grafiksel bir giriş kutusu oluşturun

Aşağıdakini kopyalayıp Windows PowerShell ISE'ye yapıştırın ve ardından bunu bir 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
}

Komut dosyası iki .NET Framework sınıfının yüklenmesiyle başlar: System.Drawing ve System.Windows.Forms. Daha sonra .NET Framework sınıfı System.Windows.Forms.Form'un yeni bir örneğini başlatırsınız. Bu, kontrol 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 bu sınıfın üç özelliğine değer atayın.

  • Metin. Bu, pencerenin başlığı olur.
  • Boyut. Bu, formun piksel cinsinden boyutudur. Önceki komut dosyası, 300 piksel genişliğinde ve 200 piksel yüksekliğinde bir form oluşturur.
  • StartingPosition. Bu isteğe bağlı özellik, önceki komut dosyasında CenterScreen olarak ayarlanmıştır. Bu özelliği eklemezseniz Windows, form açıldığında bir konum seçer. StartingPosition'u CenterScreen olarak ayarladığınızda, form her yüklendiğinde otomatik olarak ekranın ortasında görüntülenir.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Daha sonra 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, sol kenarından ise 75 pikseldir. Düğme yüksekliği 23 piksel, düğme uzunluğu ise 75 pikseldir. Komut dosyası, 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 pencerenin üst kısmından 120 piksel, sol kenarından ise 150 piksel uzaklıktadır.

$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ğlamasını istediğiniz bilgileri açıklayan etiket metnini 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 tanımladığınız bilgileri sağlamasına olanak tanıyan kontrolü (bu durumda bir metin kutusu) ekleyin. Metin kutularının yanı sıra uygulayabileceğiniz birçok başka kontrol 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 üstünde açılmaya zorlamak için Topmost özelliğini $true olarak ayarlayın.

$form.Topmost = $true

Daha sonra 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'ta 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 girdikten sonra Windows'a formla ne yapması gerektiğini bildirir ve ardından Tamam düğmesini tıklatır veya >Giriş tuşuna basın.

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

Ayrıca bakınız

  • GitHub: Dave Wyatt'ın WinFormsExampleUpdates'i)
  • Haftanın Windows PowerShell İpucu: Özel Giriş Kutusu Oluşturma

İlgili makaleler