Vb.net 以编程方式检测窗体是否已捕捉
我一直在试图找出如何检测表单是否被捕捉到桌面的一侧时遇到问题。我最近几个月的经历并没有解决我的问题,我离开了一段时间,但现在我回来了 下面的代码所做的是在Vb.net 以编程方式检测窗体是否已捕捉,vb.net,Vb.net,我一直在试图找出如何检测表单是否被捕捉到桌面的一侧时遇到问题。我最近几个月的经历并没有解决我的问题,我离开了一段时间,但现在我回来了 下面的代码所做的是在Form1\u ResizeEnd上保存表单的大小。我试图阻止在将表单捕捉到桌面一侧时要保存的大小 If WindowState = FormWindowState.Normal Then My.Settings.Size = Size 我在下面尝试了这段代码(作者),但没有成功 If me.width = Screen.PrimaryScr
Form1\u ResizeEnd
上保存表单的大小。我试图阻止在将表单捕捉到桌面一侧时要保存的大小
If WindowState = FormWindowState.Normal Then My.Settings.Size = Size
我在下面尝试了这段代码(作者),但没有成功
If me.width = Screen.PrimaryScreen.Bounds.Width / 2 And me.left = 0 Then
'code
End If
如果可能的话,我如何检测它是否像在Windows 10中那样被捕捉到屏幕的四分之一?没有与捕捉相关的表单事件,因此要确定表单是否被捕捉,必须处理“调整大小”事件,并计算它是否(可能)被捕捉。下面是查找左捕捉或右捕捉的代码,您可以扩展其他可能捕捉的原理:
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
另一条线索回答得很好。如果你在那里得到的答案真的有问题,你可以在那里表达这个问题。@HeyHeyJC我说,这个答案没有回答我的问题,因为它不起作用。答案在什么方面不起作用?你说“应该有一种不用计算就能知道的方法”。。。对不起,没有。向微软投诉。然后你说“它不工作”,这告诉我们什么。我只是试了一下作为答案发布的代码:花了我一分钟,它工作得很好,检测到屏幕左侧有一个快照。我会给你另一个答案,如果你有问题,解释一下。(一般来说,这里没有人会得到帮助你的报酬,所以礼貌一点、不那么粗鲁一点、更坦率一点会让你得到更好的回应。)