以编程方式检测表单是否已截断

时间:2015-04-27 03:37:44

标签: vb.net

我在尝试弄清楚如何检测表单是否卡在桌面的一侧时遇到了问题。几个月前我最近的thread并没有解决我的问题,我已经离开了一段时间,但我现在回来了。

以下代码在Form1_ResizeEnd上执行的操作会保存表单的大小。当表单被捕捉到桌面的一侧时,我试图阻止大小保存。

If WindowState = FormWindowState.Normal Then My.Settings.Size = Size

我已经尝试过以下代码(由Index编写),但它并没有为我做好。

If me.width = Screen.PrimaryScreen.Bounds.Width / 2 And me.left = 0 Then
'code
End If

如果可能的话,我怎样才能检测到它是否像Windows 10一样被捕捉到屏幕的四分之一?

1 个答案:

答案 0 :(得分:0)

没有与捕捉相关联的表单事件,因此要确定表单是否已被捕捉,您必须处理“调整大小”事件,并计算它是否(可能)被捕捉。这是寻找左或右对齐的代码,您可以扩展其他可能的快照的原则:

Sub Form1_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
    If Not LeftRightSnapped() Then
        SaveScreenSize()
    Else
        Debug.Print("Don't save sizes")
    End If
End Sub

Function LeftRightSnapped() As Boolean
    Dim HalfScreenWidth = Screen.PrimaryScreen.Bounds.Width / 2
    Return (Me.Width = HalfScreenWidth) And ((Me.Left = 0) Or (Me.Left = HalfScreenWidth))
End Function

Sub SaveScreenSize()
    Debug.Print("Save sizes here!")
End Sub