2015-04-27 85 views
0

我一直在試圖弄清楚如何檢測表單是否被捕獲到桌面的一側。我最近幾個月前的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?

+0

其他線程回答得非常好。如果您在那裏得到的答案確實存在真正的問題,那麼您可以在那裏表達該問題。 – HeyHeyJC

+0

@HeyHeyJC我說,那個答案沒有回答我的問題,因爲它沒有工作。 – Greg

+0

什麼方式沒有答案的工作?你說:「應該有一種方法來知道沒有計算」......好吧,沒有,對不起。向微軟投訴。然後你說「這不起作用」,這並沒有告訴我們什麼。我只是試着發佈的代碼作爲答案:花了我一分鐘,它完美的工作,檢測屏幕左側的捕捉。我會在這裏給你另一個答案,如果你有問題,請解釋一下。 (另外一般來說,這裏沒有人可以獲得報酬來幫助你,所以更禮貌,不那麼簡單,並且更多的即將來臨會讓你得到更好的迴應。) – HeyHeyJC

回答

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 
相關問題