フォームをどこに移動できるかを制御する方法はありますか?
そのため、フォームを移動すると、垂直軸でしか移動できず、水平に移動しようとしても何も起こりません。
locationchanged や move イベントのようなバグのある実装は必要なく、インラインでポップします。WndProcオーバーライドのようなものを使用する方法はありませんが、しばらく検索した後、何も見つかりませんでした。助けてください
フォームをどこに移動できるかを制御する方法はありますか?
そのため、フォームを移動すると、垂直軸でしか移動できず、水平に移動しようとしても何も起こりません。
locationchanged や move イベントのようなバグのある実装は必要なく、インラインでポップします。WndProcオーバーライドのようなものを使用する方法はありませんが、しばらく検索した後、何も見つかりませんでした。助けてください
VB.NET バージョン:
Protected Overloads Overrides Sub WndProc(ByRef m As Message)
If m.Msg = &H216 Then
' WM_MOVING = 0x216
Dim rect As Rectangle = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(Rectangle)), Rectangle)
If rect.Left < 100 Then
' compensates for right side drift
rect.Width = rect.Width + (100 - rect.Left)
' force left side to 100
rect.X = 100
Marshal.StructureToPtr(rect, m.LParam, True)
End If
End If
MyBase.WndProc(m)
End Sub