Windows Form" Jumps"点击时

时间:2015-03-03 20:39:14

标签: wpf forms powershell handler move

这个问题是关于使用System.Windows.Forms在PowerShell中构建的Windows窗体 - 我打算在某些时候将它转换为C#,但还没有发生。欢迎C#上下文答案。

因此,为了使这个工具看起来更像是一个" app"再说一下WPF的东西,控制盒和标题一起被移除了。这样做,我们就失去了移动表单的能力。所以我决定写一个很好的小数字来处理它,你们都可能同意或不同意。无论如何,它在我的工作站,笔记本电脑和与几个随机终端服务器的远程会话上运行良好。但是,在与用户一起测试时,应用程序会经历“跳跃”#34;单击鼠标单击时可能会拾取此代码的位置。表单的图标仍显示在工具栏中,但很明显表单已离开屏幕,无法拉回到中心。我不是百分百确定它是否是代码,但我有一种感觉。我无法在我的机器上重现这一点。请不要告诉我如何将表单恢复到屏幕上,这只是一种解决方法。我很欣赏任何想法。

$GLOBAL:ButtonDown = 0
$GLOBAL:FX = 0
$GLOBAL:MX = 0
$GLOBAL:FY = 0
$GLOBAL:MY = 0
$Form.Add_MouseUp({handler_Form_MouseUp})
function handler_Form_MouseUp{$GLOBAL:ButtonDown = 0}

$Form.Add_MouseDown({handler_Form_MouseDown})
function handler_Form_MouseDown{
    $GLOBAL:FX = $Form.Location.X
    $GLOBAL:MX = [System.Windows.Forms.Cursor]::Position.X
    $GLOBAL:FY = $Form.Location.Y
    $GLOBAL:MY = [System.Windows.Forms.Cursor]::Position.Y
    $GLOBAL:ButtonDown = 1
}

$Form.Add_MouseMove({handler_Form_MouseMove})
function handler_Form_MouseMove{
    if($GLOBAL:ButtonDown){
        #write-host ("X:"+ ([System.Windows.Forms.Cursor]::Position.X) + " || Y:" + ([System.Windows.Forms.Cursor]::Position.Y))
        $newX = $GLOBAL:FX + ([System.Windows.Forms.Cursor]::Position.X - $GLOBAL:MX)
        $newY = $GLOBAL:FY + ([System.Windows.Forms.Cursor]::Position.Y - $GLOBAL:MY)
        $Form.SetDesktopLocation($newX, $newY)
        $GLOBAL:FX = $Form.Location.X
        $GLOBAL:MX = [System.Windows.Forms.Cursor]::Position.X
        $GLOBAL:FY = $Form.Location.Y
        $GLOBAL:MY = [System.Windows.Forms.Cursor]::Position.Y    
    }
}

0 个答案:

没有答案