Guten Tag,
ich freunde mich gerade mit Powershell an und habe begonnen eine kleine GUI zu entwickeln.
Leider musste ich feststellen, dass ein Objekt (System.Windows.Forms.TabControl) in "Windows Powershell ISE" ohne weiteres funktioniert, versuche ich aber das Script auf dem selben Client oder auf einem Server aufzurufen, es dann leider nicht zwischen
den einzelnen Tabs wechselt.
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $objForm1 = New-Object System.Windows.Forms.Form $objTabControl1 = New-Object System.Windows.Forms.TabControl $objTabControl1.add_SelectedIndexChanged($objTabControl1_SelectedIndexChanged) $objTabPage1 = New-Object System.Windows.Forms.TabPage $objTabPage2 = New-Object System.Windows.Forms.TabPage $objLabel1 = New-Object System.Windows.Forms.Label $objLabel2 = New-Object System.Windows.Forms.Label $objForm1.Size = New-Object System.Drawing.Size(1200,755) $objForm1.StartPosition = "CenterScreen" $objForm1.text = "GUI 123" $objTabControl1.Size = New-Object System.Drawing.Size(1145,675) $objTabControl1.Location = New-Object System.Drawing.Size(20,20) $objTabPage1.Text = "XYZ" $objTabPage2.Text = "ZYX" $objLabel1.Location = New-Object System.Drawing.Size(40,110) $objLabel1.Size = New-Object System.Drawing.Size(400,30) $objLabel1.Text = "LABEL 1" $objLabel2.Location = New-Object System.Drawing.Size(40,110) $objLabel2.Size = New-Object System.Drawing.Size(400,30) $objLabel2.Text = " LABEL 2" $objTabControl1_SelectedIndexChanged= {
write-host DEBUG1
if($objTabControl1.SelectedTab -eq $objTabPage1) { $objLabel1.visible = $true $objLabel2.visible = $false } else { $objLabel1.visible = $false $objLabel2.visible = $true } } $objForm1.Controls.Add($objLabel1) $objForm1.Controls.Add($objLabel2) $objForm1.Controls.Add($objTabControl1) $objTabControl1.Controls.Add($objTabPage1) $objTabControl1.Controls.Add($objTabPage2)
Ich habe den Quelltext gekürzt, aber im großen und ganzen sollte irgendwo hier das Problem liegen.
Aufgefallen ist mir, dass wohl "$objTabControl1_SelectedIndexChanged" außerhalb der "Windows Powershell ISE" nicht aufgerufen wird. In der "Entwicklungsumgebung" (in der der Wechsel zwischen den Tabs auch problemlos funktioniert)
bekomme ich "DEBUG1" ausgegeben, über die powershell.exe direkt aufgerufen erhalte ich keine Ausgabe.
Ich hoffe ich habe mir verständlich ausgedrückt und ggf kann mir ja jemand helfen.
Gruß ;)