防止使用$Form.Close()关闭窗体时返回"Cancel"

3
在我的PowerShell脚本中,我显示一个表单并使用$Form.Close();命令来关闭它。它可以正常关闭,但是当它这样做时,会返回Cancel这个单词(如果我手动通过顶部右侧的红色x关闭表单也会出现这种情况)

当我在控制台中运行脚本时,这还好,但现在我正在使用PS2EXE-GUI将我的脚本作为GUI可执行文件运行时,当$Form.Close()运行时,会弹出一个带有Cancel单词的弹出消息,用户必须单击OK才能摆脱它。是否有任何方法可以静默地关闭表单?

在我的博客上查看完整的表单代码


我不使用 PowerShell,但我认为您需要将 DialogResult 设置为“ok”。可以使用类似以下代码的语句:$form.DialogResult = [System.Windows.Forms.DialogResult]::OK - Troy Mac1ure
嗨Troy,感谢您的回复。您的答案看起来很有前途,但不幸的是,它似乎对我无效,结果仍然是“取消”。查看DialogResult枚举的MSDN页面,它建议$Form.DialogResult = [System.Windows.Forms.DialogResult] :: None应该可以工作(我不想要任何输出),但它并不起作用-我还尝试了其他选项,如Yes,No OK等,仍然只返回“取消”。如果有空间,我可以粘贴我的表单代码。 - Richie W
我把 $Form.DialogResult = [System.Windows.Forms.DialogResult]::None 加到了定义窗体的部分 - 这个位置正确吗? - Richie W
3个回答

1
我今天遇到了这个问题,通过在ShowDialog方法之后使用Out-Null命令,我解决了它。
$Form.ShowDialog() | Out-Null

0
我找到了另一种生成不返回DialogResult的限时表单的方法。我已经在这里更新了我的页面,包括更新后的代码。

0

我通常做:

[void]$Form.Close()

但你也可以这样做:

$Form.Close() | Out-Null

嗨,感谢您的回复。不幸的是,我已经尝试过这些方法了但它们没有任何效果。脚本运行与之前相同,在窗体关闭时返回“取消”。 - Richie W
@RichieW 可以请您编辑您的问题,并提供脚本,或者如果它太长了,至少提供其中的主要部分吗? - sodawillow
我已经将代码粘贴在这里:https://albarich.wordpress.com/2017/03/31/script-close-form-after-certain-time/ - Richie W
我尝试了代码,两种方法都在我的电脑上使关闭无声 : )。 - sodawillow
我已经在上面的URL中添加了控制台截图。当我在ISE(或标准控制台)中运行完全相同的代码时,它会打开表单,然后关闭并返回“取消”。我正在使用PS 4在8.1上,你的环境是什么? - Richie W
在ISE中,PS5在W10上。这里表格不会自动关闭,我必须使用Alt + F4(不知道为什么,我还没有深入研究代码)。 - sodawillow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接