Condividi tramite


Creazione di una casella di input personalizzata

Questo esempio si applica solo alle piattaforme Windows.

Creare uno script di una casella di input grafica personalizzata usando le funzionalità di compilazione di moduli di Microsoft .NET Framework in Windows PowerShell 3.0 e versioni successive.

Creare una casella di input grafica personalizzata

Copiare e quindi incollare il codice seguente in Windows PowerShell ISE e quindi salvarlo come file di script di PowerShell (.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 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
}

Lo script inizia caricando due classi .NET Framework: System.Drawing e System.Windows.Forms. Si avvia quindi una nuova istanza della classe .NET Framework System.Windows.Forms.Form. Fornisce una maschera o una finestra vuota a cui è possibile iniziare ad aggiungere controlli.

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

Dopo aver creato un'istanza della classe Form, assegnare valori a tre proprietà di questa classe.

  • Testo. Questo diventa il titolo della finestra.
  • Dimensione. Questa è la dimensione del form, espressa in pixel. Lo script precedente crea un modulo di 300 pixel di larghezza per 200 pixel di altezza.
  • PosizioneIniziale Questa proprietà facoltativa è impostata su CenterScreen nello script precedente. Se non si aggiunge questa proprietà, Windows seleziona un percorso all'apertura del modulo. Impostando StartingPosition su CenterScreen, il modulo viene visualizzato automaticamente al centro dello schermo ogni volta che viene caricato.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'

Creare quindi un pulsante OK per il modulo. Specificare le dimensioni e il comportamento del pulsante OK . In questo esempio, la posizione del pulsante è di 120 pixel dal bordo superiore del modulo e di 75 pixel dal bordo sinistro. L'altezza del pulsante è di 23 pixel, mentre la lunghezza del pulsante è di 75 pixel. Lo script usa tipi di Windows Form predefiniti per determinare i comportamenti dei pulsanti.

$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)

Analogamente, si crea un pulsante Annulla . Il pulsante Annulla è 120 pixel dalla parte superiore, ma 150 pixel dal bordo sinistro della finestra.

$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)

Specificare quindi il testo dell'etichetta nella finestra che descrive le informazioni che gli utenti devono fornire.

$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)

Aggiungere il controllo (in questo caso, una casella di testo) che consente agli utenti di fornire le informazioni descritte nel testo dell'etichetta. Sono disponibili molti altri controlli che è possibile applicare oltre alle caselle di testo. Per altri controlli, vedere Spazio dei nomi System.Windows.Forms.

$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)

Impostare la proprietà Topmost su $true per forzare l'apertura della finestra su altre finestre aperte e finestre di dialogo.

$form.Topmost = $true

Aggiungere quindi questa riga di codice per attivare il modulo e impostare il focus sulla casella di testo creata.

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

Aggiungere la riga di codice seguente per visualizzare il modulo in Windows.

$result = $form.ShowDialog()

Infine, il codice all'interno del if blocco indica a Windows cosa fare con il modulo dopo che gli utenti forniscono testo nella casella di testo, quindi fare clic sul pulsante OK o premere INVIO .

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

Vedere anche