3

フォームをどこに移動できるかを制御する方法はありますか?

そのため、フォームを移動すると、垂直軸でしか移動できず、水平に移動しようとしても何も起こりません。

locationchanged や move イベントのようなバグのある実装は必要なく、インラインでポップします。WndProcオーバーライドのようなものを使用する方法はありませんが、しばらく検索した後、何も見つかりませんでした。助けてください

4

3 に答える 3

1

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
于 2009-06-28T06:08:09.580 に答える