2017-04-26 152 views
1

當窗體大小調整時,我需要動態調整窗體對象的大小。用戶將拖放表單的邊緣來調整其大小。我一直在尋找正確的語法來管理PowerShell中的窗體大小調整事件,但一直不成功。PowerShell窗體調整大小事件

有人能告訴我爲什麼resizeEnd不能在窗體上工作嗎?另外,處理resize事件的正確語法是什麼?

這是我試圖,但我一直得到錯誤:

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 

$form = New-Object System.Windows.Forms.Form 
$form.Size = New-Object System.Drawing.Size(1066,518) 
$form.KeyPreview = $true 
$form.StartPosition = "centerscreen" 
$form.BackColor = "MidnightBlue" 

$form.Add_KeyDown({ 
    if($_.KeyCode -eq "Escape") { 
     $form.Close() 
    } 
}) 

$form.Text = "Dialog Box 5.1" 
$form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($PSHOME + "\powershell_ise.exe") 
$form.MinimumSize = New-Object System.Drawing.Size(1066,525) 

#$form.SizeChanged({ $errorBox1.AppendText("resize") }) 
#$form.Resize({ Write-Host "resize" }) 
#$form.ClientSizeChanged({ Write-Host "size" }) 
$form.ResizeEnd({ Write-Host "resize" }) 
#$form.SizeChanged({ Write-Host "size" }) 
#$form.ControlAdded({ Write-Host "event" }) 
#$form.AutoSizeMode = New-Object System.Windows.Forms.AutoSizeMode 
#$form.AutoSizeMode = "GrowAndShrink" 
#$form.OnDragDrop({ Write-Host "drop" }) 

$form.ShowDialog() | Out-Null 

基本上,我是想說,「如果窗體大小寫主機的形式調整」。

+1

這裏有一個[鏈接](https://foxdeploy.com/series/learning-gui-toolmaking-series/)到(IMO)使用PowerShell更好地創建GUI。 – TheMadTechnician

+0

感謝您的鏈接,但除了GUI中的基礎課程之外,我完全沒有看到它與這個問題的相關性。我已經瀏覽了關於.Net在頁面上的子鏈接,並沒有談到調整事件處理程序的大小。 – CuriousOne

回答

1

例子:

$form.Add_Resize({ 
    "form resized" 
}) 

$resizeHandler = { "form resized" } 

$form.Add_Resize($resizeHandler) 

Some documentation

試試這個看長篇的方法列表暴露通過System.Windows.Forms.Form

$form = New-Object System.Windows.Forms.Form 

$form | Get-Member -Force