2010-10-14 3 views
6

Einer meiner Mitarbeiter kam gerade zu mir mit einem interessanten Problem.Zeige WinForms-Dialog mit Fokus von Powershell-Skript

Er zeigt ein WinForms-Formular aus einem PowerShell-Skript an, und während das Formular erfolgreich geöffnet wird, erhält es keinen Fokus. Stattdessen behält das PowerShell-Befehlsfenster den Fokus, bis das Formular explizit angeklickt wird.

Das Skript wird über die PowerShell-Befehlszeile unter Verwendung von. \ ScriptName.ps1 ausgeführt.

Wir haben verschiedene Kombinationen von dlg.ShowDialog() (mit und ohne $ übergeben dies), dlg.Show(), dlg.Focus() usw. ohne Glück ausprobiert.

Kann jemand den Formularfokus angeben, wenn er angezeigt wird? Diese

+0

Ist es etwas anderes mehr als nur telefonieren anzeigen zu tun()? Ich stelle mir vor, dass das Befehlsfenster den Fokus zurücknimmt. Probieren Sie zum Beispiel ShowDialog(). –

+0

Genau das habe ich erwartet, als er es mir auch erklärte, aber er benutzte ShowDialog(). Das Problem stellte sich als etwas tiefer heraus, aber sehen Sie meine Antwort unten für die Lösung, die er fand. –

Antwort

9

ist, wie wir haben es funktioniert (die erste Zeile ist das, was wir fehlten):

$WinForm.Add_Shown({$WinForm.Activate()}) 
$WinForm.ShowDialog($this) | out-null 
+0

Definiere das als Antwort :) – Jaykul