Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problema Picture Box..
Forum - C# / VB.NET - Problema Picture Box..

Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 16:30
Sabato, 14/04/2012
Salve allora , avrei un problema con un picture  box che starei usando come bottone, o meglio  gli faccio svolgere  un comando  determinato,  comunque il mio prblema sta nel fatto che vorrei che una volta cliccato , siccome ho fatto si che se gli si passa sopra con il mouse cambia immagine e anche se si clicca, vorrei dunque che una volta cliccato l' immagine che appare quando si clicca rimanga fino a quando non si clicca su un altra immagine (o nel mio caso su un bottone).

Grazie ;)

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:01
Sabato, 14/04/2012
Beh, immagino che per far cambiare l'immagine al passaggio del mouse tu abbia gestito gli eventi MouseEnter e MouseLeave; ti basta quindi dichiarare una variabile booleana (per esempio "cliccato"), da settare a True al clic dell'immagine, poi modificare il codice di MouseLeave in modo che rimetta l'immagine originale solo se "cliccato" (o comunque la variabile che hai scelto) è False. Poi, per reinserire l'immagine dopo il clic su un'altro bottone, nell'evento clic di ogni altro pulsente setti la variabile a False e rimetti l'immagine originale.
Se devi farlo con diverse PictureBox puoi anche usare la proprietà Tag di ogni controllo invece che una variabile a parte in modo da non doverne dichiarare molte.

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 11:09
Domenica, 15/04/2012
Credo di ave capito grazie....

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 11:38
Domenica, 15/04/2012
Non riesco a risolvere...volevo aggiungere però che ogni bottone va ad aprire una tab page all' interno di un tabcontrol....

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 12:30
Domenica, 15/04/2012
Testo quotato

Postato originariamente da bibimeravilla96:

Non riesco a risolvere...volevo aggiungere però che ogni bottone va ad aprire una tab page all' interno di un tabcontrol....


Questo non centra niente, magari apri un'altro topic.

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 12:35
Domenica, 15/04/2012
pensavo potessi sfruttare le funzioni del tabcontrol per facilitare le cose ma è peggio...e non so minimamentecome fare le ho provate tutte...come posso fare?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:10
Domenica, 15/04/2012
Testo quotato

Postato originariamente da bibimeravilla96:

pensavo potessi sfruttare le funzioni del tabcontrol per facilitare le cose ma è peggio...e non so minimamentecome fare le ho provate tutte...come posso fare?


Il tabcontrol non centra niente... come ho già detto ti basta sfruttare la proprietà Tag di ogni PictureBox. Ti faccio un esempio:
Codice sorgente - presumibilmente VB.NET

  1. 'Hai 4 picturebox: pb1, pb2, pb3, pb4 contenute in un Panel p e le immagini img1 e img2 (rispettivamente per lo stato normale e per quello selezionato)
  2. 'Gestisci con un metodo solo tutti i controlli
  3.     Private Sub pb_MouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pb1.MouseEnter, pb2.MouseEnter, pb3.MouseEnter, pb4.MouseEnter
  4. 'Ottieni la picturebox che ha scatenato l'evento
  5. Dim pb As PictureBox = CType(sender, PictureBox)
  6. 'cambi l'immagine
  7. pb.Image = img2
  8.     End Sub
  9.     Private Sub pb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pb1.Click, pb2.MouseEnter, pb3.Click, pb4.Click
  10. 'Setti le proprietà Tag del controllo in modo che si "ricordi" che è stato premuto
  11. sender.Tag = True
  12. 'reimposti i Tag degli altri controlli a False
  13. For Each pb As Control In p.Controls
  14.  pb.Tag=False
  15. Next
  16.     End Sub
  17.     Private Sub pb_MouseLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pb1.MouseLeave, pb2.MouseLeave, pb3.MouseLeave, pb4.MouseLeave
  18. 'Ottieni la picturebox che ha scatenato l'evento
  19. Dim pb As PictureBox = CType(sender, PictureBox)
  20. 'cambi l'immagine solo se il controllo non è stato cliccato
  21. If pb.Tag = False
  22.  pb.Image = img2
  23. End If
  24.     End Sub


Non ho testato il codice, quindi fammi sapere se va.

PM Quote
Avatar
bibimeravilla96 (Normal User)
Pro


Messaggi: 79
Iscritto: 02/01/2012

Segnala al moderatore
Postato alle 22:27
Domenica, 15/04/2012
Grazie lo provo e ti faccio sapere...;)

PM Quote