2016-03-23 14 views
1

boyutlandırmak:Özel bir <strong>kenarlıksız</strong><strong>WinForms benim <strong>PowerShell</strong> komut</strong> pencere var Powershell Win sınırsız pencerenin Komut

  • Ben kullanıcı yeniden boyutlandırmak için mümkün istiyorum ama Yalnızca yatay olarak sola doğru'a büyütün. Pencerenin
  • sağ sınır her zaman orijinal yer yer kalmak gerekiyor.

kendisini yeniden boyutlandırma çalışır, ancak yeniden boyutlandırma sırasında yatay hareket penceresi. Ayrıca, yeniden boyutlandırmaya her başladığımda, penceresi,, sola veya sağa bir kez atlar.

# 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() 

Teşekkür: Orijinal senaryo oldukça büyük olduğu için

ben de sorunu gösteren bir örnek yaptı!

cevap

1

Küçük sorunlar.

Daima $script:lastmx değil $lastmx gibi anlamlara 0.

için $script:lastmx değişkeni başlatın.

hat $Form1.Left = $Form1_LeftPos - $diffX aslında bu arada benim için çalışıyor $Form1.Left = $Form1_LeftPos + $diffX

okumalısınız:

$script:lastmx = 0 
$ResizeTimer.add_Tick({ 
      $MousePosX = ([System.Windows.Forms.Cursor]::Position).x 
      $Form1_LeftPos = $Form1.Left 
      if ($Script:lastmx -eq 0) {$script:lastmx = $MousePosX } 
      $diffX = $MousePosX - $Script:lastmx 
      $Form1.width = ($Form1.width - $diffX) 
      $Form1.Left = $Form1_LeftPos + $diffX 
      $script:lastmx = $MousePosX 
})