Benutzer mit den meisten Antworten
Objekt TabControl funktioniert im ISE, auf dem Zielsystem leider nicht

Frage
-
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ß ;)
Antworten
-
Guten Tag
Ich bin mir nicht sicher, aber meiner Meinung nach, muss die Befüllung des Skriptblocks
$objTabControl1_SelectedIndexChanged={...}
vor
$objTabControl1.add_SelectedIndexChanged($objTabControl1_SelectedIndexChanged)
sein.
Ausserdem hast du Write-Host DEBUG1 ohne Anführungszeichen ""
- Bearbeitet Powerturtle Freitag, 31. Januar 2014 14:12
- Als Antwort vorgeschlagen Powerturtle Freitag, 31. Januar 2014 15:03
- Als Antwort markiert Alex Pitulice Dienstag, 4. Februar 2014 16:18
-
Hallo und vielen Dank für die schnelle Antwort.
Ausserdem hast du Write-Host DEBUG1 ohne Anführungszeichen ""
Das ist mir wohl leider beim Übertragen des Codes passiert.
Viel wichtiger ist, dass Ihr anderer Einwand geholfen hat. Nachdem ich
$objTabControl1.add_SelectedIndexChanged($objTabControl1_SelectedIndexChanged)
an das Ende des Codes gesetzt hatte, ließ sich das Ganze auch außerhalb der ISE nutzen.
Vielen Dank und Gruß :)
P.S.: Verwunderlich, dass es in der ISE trotzdem funktioniert hat...- Als Antwort markiert Alex Pitulice Dienstag, 4. Februar 2014 16:18
Alle Antworten
-
Guten Tag
Ich bin mir nicht sicher, aber meiner Meinung nach, muss die Befüllung des Skriptblocks
$objTabControl1_SelectedIndexChanged={...}
vor
$objTabControl1.add_SelectedIndexChanged($objTabControl1_SelectedIndexChanged)
sein.
Ausserdem hast du Write-Host DEBUG1 ohne Anführungszeichen ""
- Bearbeitet Powerturtle Freitag, 31. Januar 2014 14:12
- Als Antwort vorgeschlagen Powerturtle Freitag, 31. Januar 2014 15:03
- Als Antwort markiert Alex Pitulice Dienstag, 4. Februar 2014 16:18
-
Hallo und vielen Dank für die schnelle Antwort.
Ausserdem hast du Write-Host DEBUG1 ohne Anführungszeichen ""
Das ist mir wohl leider beim Übertragen des Codes passiert.
Viel wichtiger ist, dass Ihr anderer Einwand geholfen hat. Nachdem ich
$objTabControl1.add_SelectedIndexChanged($objTabControl1_SelectedIndexChanged)
an das Ende des Codes gesetzt hatte, ließ sich das Ganze auch außerhalb der ISE nutzen.
Vielen Dank und Gruß :)
P.S.: Verwunderlich, dass es in der ISE trotzdem funktioniert hat...- Als Antwort markiert Alex Pitulice Dienstag, 4. Februar 2014 16:18