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] Ridimensionare con Form.BorderStyle = None
Forum - C# / VB.NET - [VB.NET] Ridimensionare con Form.BorderStyle = None

Avatar
bagh3 (Normal User)
Newbie


Messaggi: 11
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 16:05
Giovedì, 05/05/2011
Salve a tutti,

ho un form con impostato BorderStyle = None e vorrei inserire una piccola immagine in basso a destra che consenta (in MouseDown) di ridimensionare il form.

Come potrei fare?


Memento
Audere
Semper
PM
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 20:05
Giovedì, 05/05/2011
Senti non ti posso dare proprio un codice professionale per farlo, ma a me è venuta in mente una semplice idea
Codice sorgente - presumibilmente VB.NET

  1. Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
  2.         Timer1.Stop()
  3.         'Ferma il timer quando viene rilasciato il tasto
  4.     End Sub
  5.  
  6.     Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
  7.         Timer1.Start()
  8.     End Sub
  9.  
  10.     Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
  11.         Timer1.Stop()
  12.     End Sub
  13.  
  14.     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  15.         'Prendono la posizione del mouse corrente X e Y
  16.         Dim X = Control.MousePosition.X
  17.         Dim Y = Control.MousePosition.Y
  18.         Me.Size = New Size(X - Location.X + 5, Y - Location.Y + 5)
  19.         'Ridimensiona la grandezza del form alla posizione del cursore,
  20.         'sottrae la sua distanza dal bordo dello schermo e in questo modo
  21.         'individua il punto di fine del Form, e aggiunge 5 pixel per non
  22.         'far andare fuori il cursorse ma questo è solo un esempio,
  23.         'puoi cambiarlo come meglio vuoi
  24.     End Sub


L'ho testato e funziona bene, e a dirla tutta mi è venuto in mente adesso, un po' di fantasia, dai Eheh :k:

Ah, il codice che ho dato è solo un esempio, non voglio ricevere critiche per il mio uso del Timer, e di come si poteva fare più professionalmente. - R0gerBlack - 05/05/11 20:07
Mi chiedo xke non possa inserire una risposta [???] - comunque avevo già pensato ad una soluzione simile ma l'immagine che farà ridimensionare è 1024x728px e si trova al posto della ControlBox.. quindi dovrei calcolare anche dove si trova il mouse su quell'immagine per avere un risultato decente.. - bagh3 - 05/05/11 21:26
"ho un form con impostato BorderStyle = None e vorrei inserire una piccola immagine in basso a destra che consenta (in MouseDown) di ridimensionare il form. " E mo mi dici che l'immagine è 1024x768? Beh non so che dirti, dipende da dove vuoi che il mouse sia quando la fa ridimensionare - R0gerBlack - 06/05/11 10:48
@R0gerBlack, si scusa, mi sono spiegato male: l'immagine sostituisce la barra di controllo superiore e tenendo premuto il tasto sinistro e muovendo si muove, mentre col tasto destro si ridimensiona.. cmq ho utilizzato il tuo codice ma l'ho adattato alla mia situazione.. Grazie mille! - bagh3 - 08/05/11 14:15


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM
Avatar
Question (Normal User)
Rookie


Messaggi: 58
Iscritto: 14/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:41
Giovedì, 05/05/2011
E' solo un'idea: potresti usare graphics.drawimage per ridisegnare quell'immagine con le dimensioni specificate


Ma ovviamente x64
PM