2010-10-07 61 views
1

我可以使用下面的代碼調整,但它會調整朝向右側,從右下角調整無邊框形式

我想修改代碼,以便用戶可以重新大小從左下角形式。

此網站上給出的大部分解決方案都基於WndProc/WM_NCLBUTTONDOWN,我沒有使用它,因爲我的窗體有很多控件,所以它閃爍非常嚴重。

Private Shared frmLastWidth As Integer = 0 
    Private Shared frmLastHeight As Integer = 0 
    Private Shared frmWidth As Integer 
    Private Shared frmHeight As Integer 
    Private Shared frmIsResizing As Boolean = False 
    Private frmRectangle As New System.Drawing.Rectangle() 

    Private Sub ResizeMe_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseUp 
    If frmIsResizing Then 


     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 



     frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
     ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
     Me.Width = frmWidth 
     Me.Height = frmHeight 
     frmIsResizing = False 

    End If 





    End Sub 

    Private Sub ResizeMe_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseDown 

    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 

    End Sub 



    Private Sub ResizeMe_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseMove 




    If e.Button = Windows.Forms.MouseButtons.Left Then 

'Me.ResizeRedraw = false 
    Dim sizeageX As Integer = MousePosition.X - Me.Location.X 
    Dim sizeageY As Integer = MousePosition.Y - Me.Location.Y 

    ' Use this to restrict Width 
    If sizeageX < Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY < Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX 
    frmHeight = sizeageY 

    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 
    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    End Sub 

    Private Sub ResizeRight(ByVal e As System.Windows.Forms.MouseEventArgs) 
    'Me.ResizeRedraw = false 

    Dim sizeageX As Integer = (MousePosition.X + Me.Width) - Me.Location.X 
    Dim sizeageY As Integer = (MousePosition.Y + Me.Height) - Me.Location.Y 



    ' Use this to restrict Width 
    If sizeageX < Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY < Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX 
    frmHeight = sizeageY 

    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 
    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 


    End If 


    End Sub 

更新

我能夠重新大小的形式左下角,但它示出了虛線多次也虛線不限制到窗體的最小高度和寬度的改性代碼是

Private Sub ResizeRight(ByVal e As System.Windows.Forms.MouseEventArgs) 
    'Me.ResizeRedraw = false 
    Dim sizeageX As Integer = MousePosition.X + Me.Location.X 
    Dim sizeageY As Integer = MousePosition.Y + Me.Location.Y 

    ' Use this to restrict Width 
    If sizeageX > Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY > Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX - e.X 
    frmHeight = sizeageY - e.Y 


    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 

    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left + e.X, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left + e.X, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, system.Windows.Forms.FrameStyle.Dashed) 
End Sub 

回答