将一个powerhell表单按钮调用到一个函数。

问题描述 投票:0回答:1

我想用powershell建立一个gui表单,我想添加一个按钮,如下图所示。

$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(35,35)
$Button.Size = New-Object System.Drawing.Size(120,23)
$Button.Text = "Show Dialog Box"
$Form.Controls.Add($Button)
$Button.Add_Click($Button_Click)

现在我想用几个命令创建一个名为button_click的函数,比方说:echo "Hello world",所以我写了这个。

Function Button_Click(){
echo "Hello World"}

但是点击按钮却没有任何结果, 我到底做错了什么?

forms powershell user-interface button onclick
1个回答
0
投票

你使用的是Write-Output,它将写入管道,在这种情况下,将不会显示,因为你的PowerShell控制台是锁定的,当 $form.ShowDialog() 是活动的。

然而你仍然可以这样做! Write-host 是另一个返回输出的cmdlet,它可以直接实时写入PowerShell主机窗口。 这是一种罕见的情况,当你可能确实想使用 Write-Host.

然后,要做一些小的调整。 一般来说,你的事件处理程序行为应该在加入 $button$Form.

你做了一个名为 Button_click但你把事件处理程序当作一个变量来添加。 下面是如何做到这一点的,通过创建一个变量,其中包含一个 {scriptblock}:

$button_click = {write-host "hi Sahar"}

做完这些后,你的代码应该是这样的,它将会像预期的那样工作

$form = New-Object System.Windows.Forms.Form
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(35,35)
$Button.Size = New-Object System.Drawing.Size(120,23)
$Button.Text = "Show Dialog Box"
$Button.Add_Click($Button_Click)

$Form.Controls.Add($Button)


 $form.showdialog()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.