1
我有一個無國界的WinForms我的PowerShell腳本窗口:自定義調整在PowerShell中的WinForms國界的窗口的腳本
- 我希望用戶能夠調整它,但它應該只有 水平長到左邊。
- 正確邊框的窗口需要留在它的原始 地方在任何時間。
調整大小本身有效,但窗口在調整大小期間水平移動。此外,每次我開始調整大小時,窗口會向左或向右跳一次。
由於原來的劇本是相當大的,我做了說明問題的例子:
# custom resize example
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Form1 = New-Object System.Windows.Forms.Form
$Form1.size = "500,500"
$Form1.FormBorderStyle = "None"
$Form1.TopMost = $true
$Form1.StartPosition = "CenterScreen"
$Form1.add_MouseClick({ if ($_.Button -eq "Right") { $form1.close()} })
$resizeBar = New-Object System.Windows.Forms.Label
$resizeBar.BackColor = "150,150,150"
$resizeBar.Size = "8,500"
$resizeBar.Cursor = "SizeWE"
$Form1.controls.add($resizeBar)
$resizeBar.add_MouseDown({ $ResizeTimer.start()})
$resizeBar.add_MouseUp({ $ResizeTimer.stop()})
$comp = new-object System.ComponentModel.Container
$ResizeTimer = New-Object System.Windows.Forms.Timer($comp)
$ResizeTimer.Interval = 10
$ResizeTimer.add_Tick({
$MousePosX = ([System.Windows.Forms.Cursor]::Position).x
$Form1_LeftPos = $Form1.Left
if ($lastmx -eq 0) {$script:lastmx = $MousePosX }
$diffX = $MousePosX - $lastmx
$Form1.width = ($Form1.width - $diffX)
$Form1.Left = $Form1_LeftPos - $diffX
$script:lastmx = $MousePosX
})
$Form1.showdialog()
謝謝!