尝试使用简单的 GUI 制作基本的 Ping 工具,但是目前 ping 按钮什么也没做,即使我已经将其定义为具有操作



然而,目前ping按钮什么也不做,即使我已经定义了它有一个动作。

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(400,400)
$form.StartPosition = 'CenterScreen'
$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 = "Ping"
$Button.Add_Click($Button_Click)
$Form.Controls.Add($Button)
$form.showdialog()
$Button_Click = $pinger
$pinger = Ping 8.8.8.8 -t > C:ToolsPingtoool.txt
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

如果有人能看一看,或者建议更好的方法,我将乐意洗耳恭听。

谢谢。

您只需要将事件存储为scriptblock,除此之外,scriptblock应该在将其添加到按钮的Click事件之前进行定义。我已经添加了一些修改你的代码,测试它现在:)

Add-Type -AssemblyName System.Windows.Forms, System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(400,400)
$form.StartPosition = 'CenterScreen'
$form.Topmost = $true
$pingEvent = {
$file = New-TemporaryFile
Test-Connection 8.8.8.8 | Out-File $file
notepad.exe $file
}
$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 = "Ping"
$Button.Add_Click($pingEvent)
$Form.Controls.Add($Button)
$form.Add_Shown({$Button.Select()})
$result = $form.ShowDialog()

注意事项:

  • ping -t将使您的GUI冻结,因为它将运行直到手动停止。
  • ping已更改为Test-Connection,因为它是PowerShell的内置cmdlet用于ping。
  • $pinger = Ping 8.8.8.8 -t > C:ToolsPingtoool.txt在这行被解释的时候正在执行,如果你想在点击按钮时执行这行,你可以将代码存储为scriptblock:
$pinger = { Ping 8.8.8.8 -t > C:ToolsPingtoool.txt }
$Button.Add_Click($pinger)

也可以简化为:

$Button.Add_Click({
Ping 8.8.8.8 -t > C:ToolsPingtoool.txt
})
  • $Button.Add_Click($Button_Click)线上,$Button_Click在被定义之前被添加为event,这就是为什么当你点击什么都没有发生(除了之前提到的,event不是scriptblock)。

相关内容

  • 没有找到相关文章

最新更新