Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] Trascinare un form cliccando su un'aria definita in esso
Forum - C# / VB.NET - [vb.net] Trascinare un form cliccando su un'aria definita in esso

Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 10:54
Venerdì, 22/10/2010
Non so se si capisce bene dal titolo...ma mi servirebbe riuscire a spostare il form cliccando non sulla barra del titolo ma da un aria dentro il form che sia definita e non lo spazio che occupa l'intero form...ci sono diversi esempi in giro che permettono di spostare il form cliccando su una zona qualunque del form ma non risolvono il mio prob..

ho creato una barra del titolo personalizzata tramite l'oggetto graphics del form e ho eliminato la barra del titolo...vorrei adesso poter spostare il form cliccando solo su quell'aria che rappresenta la barra creata (un rettangolo).

Inoltre vi chiedo se è possibile fare lo stesso lavoro cliccando su un controllo interno al form...tipo un picturebox...

grazie

PM Quote
Avatar
Ale96 (Member)
Pro


Messaggi: 132
Iscritto: 06/04/2010

Segnala al moderatore
Postato alle 15:18
Venerdì, 22/10/2010
Puoi sfruttare l'evento mousemove, che si verifica quando il mouse si muove su un controllo, sia che sia premuto sia che non lo sia.
ho sfruttato questo metodo per spostare la finestra di un programma, questo è il codice, guarda le sub BtnMove_MouseDown e quella precedente.
http://www.pierotofy.it/pages/sorgenti/browse/18662/4438/


Qualunque bug sufficientemente avanzato è indistinguibile da una caratteristica del software.

Ci sono 10 tipi di persone al mondo: chi capisce il codice binario e chi no.

I veri utenti non usano mai la funzione “Help”.
(tutti anonimi)
PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 17:06
Venerdì, 22/10/2010
Testo quotato

Postato originariamente da Ale96:

Puoi sfruttare l'evento mousemove, che si verifica quando il mouse si muove su un controllo, sia che sia premuto sia che non lo sia.
ho sfruttato questo metodo per spostare la finestra di un programma, questo è il codice, guarda le sub BtnMove_MouseDown e quella precedente.
http://www.pierotofy.it/pages/sorgenti/browse/18662/4438/




ottimo..proprio quello che fa al caso mio...mettendo una picturebox trasparente nell'aria che voglio usare come barra del titolo va bene...

in realtà ho provato a fare lo stesso con il form creando un rettangolo con le coordinate e le dimensioni dell'area scelta e poi creandomi una condizione che mi facesse funzionare il codice se le coordinate del mouse rientrassero in quell'area...

risultato?
funziona si però se muovo velocemente a quanto pare non è molto efficiente..credo che il problema stia proprio nei colcoli all'interno del mousemove...troppi per farli cosi velocemente

ecco il codice
Codice sorgente - presumibilmente VB.NET

  1. Dim r As Rectangle
  2.  
  3.     Private Sub BtnMove_MouseMove(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles Me.MouseMove
  4.         r = New Rectangle(0, 0, Me.Width, 15)
  5.  
  6.         If e.X >= r.X And e.X <= r.Width And e.Y >= r.Y And e.Y <= r.Height Then
  7.             If e.Button = Windows.Forms.MouseButtons.Left Then
  8.                 Me.Location = New Point(Me.Location.X + e.X - p.X, Me.Location.Y + e.Y - p.Y)
  9.             End If
  10.         End If
  11.  
  12.         btnTempo.Text = a
  13.  
  14.     End Sub





PM Quote