When I create a form (window) in PowerShell, I can usually display the form using .ShowDialog():
$form = New-Object System.Windows.Forms.Form
$form.ShowDialog()
.Visible is set to False before and after .ShowDialog().
But when I do a .Show() nothing is displayed on the screen:
$form.Show()
And .Visible is now set to True (presumably because .Show() made the form officially visible.)
When I now try to .ShowDialog() the form again, I get the following error message:
"Form that is already visible cannot be displayed as a modal dialog box. Set the form's visible property to false before calling showDialog."
But when I follow the instructions to .ShowDialog() again
$form.Visible=0
$form.ShowDialog()
the result is that nothing is displayed on the screen and PowerShell hangs and cannot recover (ctrl-c doesn't seem to work). I assume this is because the form is being displayed modally somewhere where I cannot see it (or tab to it). But why?
The coordinates of the form haven't changed. So how does the form decide when it is physically visible and when it isn't?