Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 调整无边框窗体的大小_Vb.net_Winforms_Resize_Borderless - Fatal编程技术网

Vb.net 调整无边框窗体的大小

Vb.net 调整无边框窗体的大小,vb.net,winforms,resize,borderless,Vb.net,Winforms,Resize,Borderless,我可以使用下面的代码调整大小,但它会从右下角向右侧调整大小 我想修改代码,以便用户可以从左下角重新调整表单的大小 此外,这个网站上给出的大多数解决方案都是基于WndProc/WM_ncluButtonDown的,我没有使用它,因为我的表单有很多控件,所以它的闪烁非常严重 Private Shared frmLastWidth As Integer = 0 Private Shared frmLastHeight As Integer = 0 Private Shared frmWid

我可以使用下面的代码调整大小,但它会从右下角向右侧调整大小

我想修改代码,以便用户可以从左下角重新调整表单的大小

此外,这个网站上给出的大多数解决方案都是基于WndProc/WM_ncluButtonDown的,我没有使用它,因为我的表单有很多控件,所以它的闪烁非常严重

  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

您可以做的是根据以下命令挂起控件布局(suspend.Layout) 这也许能阻止闪烁

 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