Hallo Leute,
vielleicht kann mir hier jemand weiter helfen bzw. einen besseren Code vorschlagen. Vielen Dank im Voraus
Ich habe/möchte eine Powershell GUI mit functions erstellen, jedoch weiß ich nicht wie ich Beispielsweise ein Label ein/ausblenden kann (Siehe letzten 15 Zeilen im Code)
Hier mein derzeitiger Code:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$Windowname = "Script"
$xmax = "300" #Am besten mit STRG+H alle Zahlen von "300" auf die gewünschte Größe ersetzen
$ymax = "450" #Am besten mit STRG+H alle Zahlen von "450" auf die gewünschte Größe ersetzen
function Button{
param(
[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
[parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
[parameter(Mandatory=$true)][ValidateSet("OK", "Cancel", "None")]$Result,
[AllowEmptyString()][ValidateSet($true, $false)]$AddClick,
[AllowEmptyString()]$Click
)
$ButtonName = "Button" + $Name
$ButtonName = New-Object System.Windows.Forms.Button
$ButtonName.Location = New-Object System.Drawing.Point($posx,$posy)
$ButtonName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
$ButtonName.Text = $Name
$ButtonName.DialogResult = $Result
if($AddClick -eq $true){
$ButtonName.add_click({
$Click
})
}
if($Visable -eq $true){$form.Controls.Add($ButtonName)}
}
function Label{
param(
[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
[parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
[AllowEmptyString()] $Text
)
$LabelName = "Label" + $Name
$LabelName = New-Object System.Windows.Forms.Label
$LabelName.Location = New-Object System.Drawing.Point($posx,$posy)
$LabelName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
$LabelName.Text = $Text
if($Visable -eq $true){$form.Controls.Add($LabelName)}
}
function Box{
param(
[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
[parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
[parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
[parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
[parameter(Mandatory=$true)][ValidateSet("List", "Text", "Search")]$Version,
[AllowEmptyString()] $input,
[AllowEmptyString()] $Text
)
if($Version -eq "List"){
$ListBoxName = "ListBox" + $Name
$ListBoxName = New-Object System.Windows.Forms.ListBox
$ListBoxName.Location = New-Object System.Drawing.Point($posx,$posy)
$ListBoxName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
$ListBoxName.SelectionMode = 'MultiExtended'
foreach ($i in $input){[void] $ListBoxName.Items.Add($i)}
$listBox.Height = $Sizey
$form.Topmost = $true
if($Visable -eq $true){$form.Controls.Add($ListBoxName)}
}elseif($Version -eq "Text"){
$TextBoxName = "TextBox" + $Name
$TextBoxName = New-Object System.Windows.Forms.TextBox
$TextBoxName.Location = New-Object System.Drawing.Point($posx,$posy)
$TextBoxName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
$form.Topmost = $true
if($Visable -eq $true){$form.Controls.Add($TextBoxName)}
}
}
$form = New-Object System.Windows.Forms.Form
$form.Text = $Windowname
$form.Size = New-Object System.Drawing.Size($xmax,$ymax)
$form.StartPosition = 'CenterScreen'
Button -Name "OK" -posx "75" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result OK
Button -Name "Cancel" -posx "150" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result Cancel
Button -Name "NoPrinter" -posx "10" -posy "305" -Sizex "260" -Sizey "23" -Visable True -Result None -AddClick True -Click "$form.Controls.Add(Text2)"
Label -Name "Text1" -posx "10" -posy "10" -Sizex "280" -Sizey "30" -Visable True -Text 'Wähle die Drucker aus
(Mit "STRG" können mehrere ausgewählt werden)'
Label -Name "Text2" -posx "10" -posy "330" -Sizex "280" -Sizey "30" -Visable False -Text 'Gib den vollständigen Druckernamen ein:'
Box -Name "Text" -posx "10" -posy "350" -Sizex "260" -Sizey "20" -Visable True -Version Text
$result = $form.ShowDialog()