我的一个同事刚刚来找我,提出了一个有趣的问题。他正在显示来自PowerShell脚本的WinForms表单,当表单成功打开时,它没有获得焦点。相反,PowerShell命令窗口将保留焦点,直到显式单击该表单。该脚本正在使用.\ScriptName.ps1从PowerShell命令行运行。我们已经尝试了dlg.ShowDialog()(有或没有传递$this)、dlg.Show()、dlg.Focus()等的各种组合,但都没有成功。有人知道如何在窗体显示时给予它焦点吗?
rqmkfv5c1#
这是我们如何让它工作的(第一行是我们遗漏的):
$WinForm.Add_Shown({$WinForm.Activate()}) $WinForm.ShowDialog($this) | out-null
yrdbyhpb2#
我在Powershell中使用的是C#,Redwood的答案中的Add_Shown位可以解释为添加Shown的事件处理程序,或者简单地覆盖OnShown:
Add_Shown
Shown
OnShown
protected override void OnShown(EventArgs e) { base.OnShown(e); this.Activate(); }
2条答案
按热度按时间rqmkfv5c1#
这是我们如何让它工作的(第一行是我们遗漏的):
yrdbyhpb2#
我在Powershell中使用的是C#,Redwood的答案中的
Add_Shown
位可以解释为添加Shown
的事件处理程序,或者简单地覆盖OnShown
: