winforms – 为什么PowerShell显示的表单有时不显示?

当我在Power Shell中创建表单(窗口)时,我通常可以使用.ShowDialog()显示表单:

$form = New-Object System.Windows.Forms.Form
$form.ShowDialog()

.VhowDialog()之前和之后将.Visible设置为False.

但当我做.Show()屏幕上没有显示任何内容

$form.Show()

而.Visible现在设置为True(大概是因为.Show()使形式正式可见.)

当我现在再次尝试.ShowDialog()表单时,我收到以下错误消息:

“已经可见的表单不能显示为模式对话框.在调用showDialog之前,将表单的visible属性设置为false.”

但是当我再次按照说明操作.ShowDialog()时

$form.Visible=0
$form.ShowDialog()

结果是屏幕上没有显示任何内容,PowerShell挂起并且无法恢复(ctrl-c似乎不起作用).我认为这是因为表单在某个地方显示模式,我无法看到它(或Tab键到它).但为什么?

表格的坐标没有改变.那么表单如何确定它何时在物理上可见以及何时不可见?

解决方法

避免使用PowerShell中的Show(),因为它需要一个消息泵,这不是PowerShell控制台在创建表单的线程上提供的. ShowDialog()有效,因为操作系统在此模态调用期间执行消息处理.创建表单并调用ShowDialog()对我来说可靠.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些