2010-10-07 54 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 

回答