1
votes

I used this code to maximize and restore my custom form. But when the form is maximized, it still remains draggable, I use a timer to drag the form.

Private Sub btnMaximize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMaximize.Click, lblTitle.MouseDoubleClick
        Dim maximizeHeight As Integer = Screen.PrimaryScreen.WorkingArea.Height
        Dim maximizeWidth As Integer = Screen.PrimaryScreen.WorkingArea.Width
        Dim maximizeLocation As Point = New Point(0, 0)
        Dim fullscreen As Boolean = False

    If Me.Height = maximizeHeight Or Me.Width = maximizeWidth Or Me.Location = maximizeLocation Then
        fullscreen = True
    Else
        fullscreen = False
    End If

    If fullscreen = True Then
        Me.Size = New Size(1000, 500)
        Me.Left = (Screen.PrimaryScreen.WorkingArea.Width - Me.Width) / 2
        Me.Top = (Screen.PrimaryScreen.WorkingArea.Height - Me.Height) / 2
    ElseIf fullscreen = False Then
        Me.Location = New Point(0, 0)
        Me.Size = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)
    End If
End Sub<code>

Private Sub pnlBar_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lblTitle.MouseDown MoveTmr.Start() refpositions() End Sub

Private Sub MoveTmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles MoveTmr.Tick Me.Location = oloc - ocur + System.Windows.Forms.Cursor.Position refpositions() End Sub Private Sub pnlBar_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lblTitle.MouseUp MoveTmr.Stop() refpositions() End Sub Private Sub RszTmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles RszTmr.Tick Me.Size = appSize - curPos + Cursor.Position refpositions() End Sub

3

3 Answers

1
votes

make:

Dim fullscreen As Boolean = False

a class variable.

Then edit this code to fit your variables:

Private Sub Mover_Tick(sender As System.Object, e As System.EventArgs) Handles Mover.Tick
    If fullscreen = false Then
         Dim pt As New Point((Me.Location.X + (MousePosition.X - mPosX)), (Me.Location.Y + (MousePosition.Y - mPosY)))
         Me.Location = pt
         mPosX = MousePosition.X
         mPosY = MousePosition.Y
    End If
End Sub

EDIT:

Also implement this:

Private Sub Title_StartDrag(sender As System.Object, e As MouseEventArgs) Handles Title.MouseDown
    mPosX = MousePosition.X
    mPosY = MousePosition.Y
    If e.Button = Windows.Forms.MouseButtons.Left Then
        Mover.Start()
    End If
End Sub

Private Sub Title_StopDrag(sender As System.Object, e As MouseEventArgs) Handles Title.MouseUp
    Mover.Stop()
End Sub

also you may want to make it much simpler by saying Me.WindowState = FormWindowState.Maximized

0
votes

I use the Mousedown, Mouseup and Mousemove events to move my forms.

Public Class Form1

Private Is_Dragged As Boolean = False
Private M_DownX As Integer
Private M_DownY As Integer

Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

    If e.Button = MouseButtons.Left Then
        Is_Dragged = True
        M_DownX = e.X
        M_DownY = e.Y
    End If

End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp

    If e.Button = MouseButtons.Left Then
        Is_Dragged = False
    End If

End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove

    If Is_Dragged Then
        Dim tmp_pnt As Point = New Point()

        tmp_pnt.X = Me.Location.X + (e.X - M_DownX)
        tmp_pnt.Y = Me.Location.Y + (e.Y - M_DownY)
        Me.Location = tmp_pnt
        tmp_pnt = Nothing

    End If

End Sub

End Class

and to maximize my form.

Private Sub Btn_Main_Max_Click(sender As Object, e As EventArgs) Handles Btn_Main_Max.Click

    Static IsAlreadyResized As Boolean

    If Not IsAlreadyResized Then
        Me.WindowState = FormWindowState.Maximized
        IsAlreadyResized = True
        Exit Sub
    End If

    If IsAlreadyResized Then
        Me.WindowState = FormWindowState.Normal
        IsAlreadyResized = False

    End If

 End Sub
-2
votes

You can create a panel in code or visually and place dock.top then you can put a label on the side or in the middle and a picturebox on the left side of the window create the buttons to close minimize and maximize or others and add the friend code above to move the form by the titl bar as in windows