VB.Net - THUNDER

Software, Programmazione, VB.NET, Windows.

Muovere un form senza Bordi

Con questa guida mostrerò come creare e muovere un form senza bordi (borderless), quindi senza ControlBox.

» DIZIONARIO

FormBorderStyle

Proprietà che definisce lo stile del bordo del form

 

Debug

Operazione che permette di provare un programma in fase di sviluppo

 

 

Panel

Un contenitore che organizza altri oggetti al suo interno

 

Dock

Proprietà che consente di orientare un oggetto del form verso una parte di esso

 

Option Explicit On

Istruzione che impone la dichiarazione esplicita di tutte le variabili in un file.

 

X; Y;

Coordinate del piano cartesiano, di cui l'uso può determinare la posizione esatta di un oggetto.

X = Asse delle Ascisse (Orizzontale)

Y = Asse delle Ordinate (Verticale)

 

Me

Conosciuto come this per il linguaggio C#/C++, è una costante il cui valore è il nome del form in uso. Per esempio, se si sta scrivendo un codice nella pagina appartenente al form denominato Form2, questa costante sta a significare Form2.

Viene usata al posto del nome diretto del form, perché è considerata un'eccezione dal programma

 

 

Preparazione

Nelle proprietà del form, impostate la proprietà “FormBorderSyile” su None. Questo metodo elimina semplicemente i bordi e i pulsanti. Noterete che durante il debug, il form non si muoverà, pertanto bisogna implementarci un codice che vi darò qui sotto

Adesso non ci resta che completare il form, senza dimenticarci di inserirvi i tasti per la chiusura!

 

Aggiunta degli oggetti

Per rendere il programma più professionale e permettere un movimento migliore del form, aggiungervi un elemento Panel, e dalle proprietà, inpostare il Dock a Top, quindi ridimensionarlo.

 

Aggiunta del codice

Entrare nella pagina del codice (di solito Form1.vb). Se non è presente, fare doppio-click in qualsiasi parte del form. Adesso sostituire il suo contenuto con il codice sottostante:

 

'' Prelevato da http://thunder.xoom.it ''

Option Explicit On

Public Class Form1

    Private diff As Point

    Public Sub New()

        InitializeComponent()

    End Sub

    Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown

'evento: click del mouse

        diff = New Point(-e.X, -e.Y) 'restituisce la posizione del form

    End Sub

    Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove

'evento: movimento del mouse

        If e.Button = MouseButtons.Left Then 'se il tasto è il sinistro...

            Dim mouse_loc As Point = Control.MousePosition '...

            mouse_loc.Offset(diff.X, diff.Y) '...

            Me.Location = mouse_loc '...imposta la posizione del form nel punto in cui è posizionato il mouse

        End If

    End Sub

End Class

 

Note

Perchè proprio Panel?

  • È uno dei modi più ordinati per organizzare oggetti in un form
  • Può diventare invisibile
  • All'evento dello spostamento del form, consente un movimento pulito dello stesso

Buon lavoro.

Ciao!