powershell正在重新打开子窗体

powershell正在重新打开子窗体,powershell,subform,Powershell,Subform,我正在PowerShell中编写我的第一个子表单。当我编写代码时,一切都会完美地启动。当我通过窗口中的x关闭子窗体,然后重新打开它时,我收到错误: 异常设置“可见”:“无法访问已处置的对象”。 对象名称:“表单” 第5行字符:5 $ExampleForm.visible=$true ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(:)[],SetValueInvocationException +FullyQualifiedErr

我正在PowerShell中编写我的第一个子表单。当我编写代码时,一切都会完美地启动。当我通过窗口中的x关闭子窗体,然后重新打开它时,我收到错误:

异常设置“可见”:“无法访问已处置的对象”。 对象名称:“表单” 第5行字符:5 $ExampleForm.visible=$true ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(:)[],SetValueInvocationException +FullyQualifiedErrorId:设置时的例外情况

我的代码如下:


function TestFunction
{
    $ExampleForm.enabled = $true
    $ExampleForm.visible = $true
}

$Form = New-Object system.Windows.Forms.Form 
$Form.Size = New-Object System.Drawing.Size(1050,425) 
$form.MaximizeBox = $false 
$Form.StartPosition = "CenterScreen" 
$Form.FormBorderStyle = 'Fixed3D' 
$Form.Text = "Test Form"  

$ExampleForm = New-Object system.Windows.Forms.Form 
$ExampleForm.Size = New-Object System.Drawing.Size(550,425) 
$ExampleForm.MaximizeBox = $false 
$ExampleForm.StartPosition = "CenterScreen" 
$ExampleForm.FormBorderStyle = 'Fixed3D'
$ExampleForm.Text = "Example"
$ExampleForm.Visible = $False

$TestButton = new-object System.Windows.Forms.Button
$TestButton.Location = new-object system.drawing.size(401,140) 
$TestButton.Size = new-object system.drawing.size(80,50)
$TestButton.Text = "Test"
$TestButton.Add_Click({TestFunction}) 
$TestButton.TabIndex = 33
$Form.Controls.Add($TestButton)

$Form.ShowDialog()
我做错了什么?

您每次都要创建一个新表单:

function TestFunction
{
  $ExampleForm = New-Object System.Windows.Forms.Form 
  $ExampleForm.Size = New-Object System.Drawing.Size(550,425) 
  $ExampleForm.MaximizeBox = $false 
  $ExampleForm.StartPosition = "CenterScreen" 
  $ExampleForm.FormBorderStyle = 'Fixed3D'
  $ExampleForm.Text = "Example"

  # ShowDialog will prevent re-focusing on parent form until this one closes
  [void]$ExampleForm.ShowDialog()

  # If you don't want this modal behavior, use `Show()` instead:
  # [void]$ExampleForm.Show()
}

$Form = New-Object System.Windows.Forms.Form 
$Form.Size = New-Object System.Drawing.Size(1050,425) 
$Form.MaximizeBox = $false 
$Form.StartPosition = "CenterScreen" 
$Form.FormBorderStyle = 'Fixed3D' 
$Form.Text = "Test Form"  

$TestButton = New-Object System.Windows.Forms.Button
$TestButton.Location = New-Object System.Drawing.Size(401,140) 
$TestButton.Size = New-Object System.Drawing.Size(80,50)
$TestButton.Text = "Test"
$TestButton.add_Click({TestFunction}) 
$TestButton.TabIndex = 33
$Form.Controls.Add($TestButton)

$Form.ShowDialog()

单击X将关闭窗口并释放底层资源。你会想每次都创建一个新表单:-)谢谢这个解决了我的问题!!!谢谢这个修正了我的问题!!!