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] evento GotFocus
Forum - C# / VB.NET - [VB.Net] evento GotFocus

Avatar
Abdizur (Normal User)
Newbie


Messaggi: 6
Iscritto: 13/06/2010

Segnala al moderatore
Postato alle 15:44
Venerd, 20/08/2010
Ciao!
Sono alle prime armi con VB.Net e sto dunque cercando di scrivere i miei primi programmi.

Ho un problema con l'evento GotFocus di un ComboBox, in sostanza quando questo controllo acquisisce il fuoco vorrei chiedere alcune cose all'utente e in funzione della risposta il fuoco deve passare ad una TextBox oppure restare al ComboBox.

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmb_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb.GotFocus
  2.  
  3.         Static fuoco As Boolean = False
  4.         Dim message As String = ""
  5.         Dim result As MsgBoxResult
  6.  
  7.         If Not (fuoco) Then
  8.  
  9.             fuoco = True
  10.             result = MsgBox(message, MsgBoxStyle.Information + MsgBoxStyle.YesNo)
  11.  
  12.             If result = MsgBoxResult.Yes Then
  13.                 txt.Enabled = False
  14.             Else
  15.                 cmb.Enabled = False
  16.                 fuoco = False
  17.             End If
  18.         End If
  19.     End Sub



come si vede dal codice, se l'utente clicca si allora disabilito la TextBox altrimenti disabilito la ComboBox.

La variabile statica fuoco una soluzione, forse poco elegante, al fatto che dopo la chiamata del message box e la risposta dell'utente l'evento veniva chiamato ricorsivamente.
Il problema che se clicco su no, quando ritorno sul ComboBox l'evento non viene pi scatenato.

Ultima modifica effettuata da Abdizur il 20/08/2010 alle 16:22
PM Quote
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 15:55
Venerd, 20/08/2010
L'evento non viene richiamato perch la combobox disabilitata.

Codice sorgente - presumibilmente VB.NET

  1. If result = MsgBoxResult.Yes Then
  2.               txt.Enabled = False
  3.             Else
  4.                 cmb.Enabled = False
  5.             End If



Disabilitandola gli impedisci di generare eventi.

EDIT: Se vuoi permettergli di generare eventi devi riabilitarla, o se vuoi risolvere in maniera piuttosto brutta, ci metti sopra un picturebox con l'immagine di una combobox disabilitata visibile soltanto quando la combobox disabilitata e gli dai l'evento desiderato. Ma davvero brutta come soluzione. Spero che qualcuno possa suggerirti meglio :D

Ultima modifica effettuata da Iohoilpotere il 20/08/2010 alle 16:05
PM Quote
Avatar
Abdizur (Normal User)
Newbie


Messaggi: 6
Iscritto: 13/06/2010

Segnala al moderatore
Postato alle 16:19
Venerd, 20/08/2010
Ho disabilitato la combobox perch l'utente sia costretto a tornare sulla textbox, ma nel key press della textbox riabilito nuovamente la combobox.
Infatti posso scriverci oppure selezionare una voce dell'elenco ma l'evento GotFocus non viene scatenato.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 16:21
Venerd, 20/08/2010
Testo quotato

Postato originariamente da Iohoilpotere:
se vuoi risolvere in maniera piuttosto brutta, ci metti sopra un picturebox con l'immagine di una combobox disabilitata visibile soltanto quando la combobox disabilitata e gli dai l'evento desiderato. Ma davvero brutta come soluzione. Spero che qualcuno possa suggerirti meglio :D



Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Abdizur (Normal User)
Newbie


Messaggi: 6
Iscritto: 13/06/2010

Segnala al moderatore
Postato alle 16:29
Venerd, 20/08/2010
Avevo dimenticato di settare fuoco = false, ma non cambia nulla, l'evento continua a non essere invocato.

Questo il codice che avevo dimenticato di aggiungere al primo post

Codice sorgente - presumibilmente VB.NET

  1. Private Sub txt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt.TextChanged
  2.  
  3.         cmb.Enabled = True
  4. End Sub


PM Quote
Avatar
Abdizur (Normal User)
Newbie


Messaggi: 6
Iscritto: 13/06/2010

Segnala al moderatore
Postato alle 18:49
Venerd, 20/08/2010
Ho risolto in questo modo,
mi sono accorto che se passo dalla tetxbox al combobox premendo il tasto tab allora l'evento viene correttamente invocato, il problema esisteva quando ci cliccavo su, quindi..

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmb_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb.Click
  2.  
  3.         'Forzo la chiamata dell'evento GotFocus
  4.         Me.cmb_GotFocus(sender, e)
  5.     End Sub



Anche se non ho idea di cosa siano sender ed e!

Visto che ci sono, sapete come inserire il simbolo dell'euro in un textbox?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:28
Venerd, 20/08/2010
Testo quotato

Postato originariamente da Abdizur:
Anche se non ho idea di cosa siano sender ed e!
Visto che ci sono, sapete come inserire il simbolo dell'euro in un textbox?



sender l'oggetto su cui stato scatenato l'evento ed "e" sono gli argomenti dell'evento.

ma come si fa a programmare in .net senza avere la minima idea di queste cose...

ripeto: odddddioooo cos' http://www.youtube.com/watch?v=uciXvr17SNE#t=3m12s


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:33
Sabato, 21/08/2010
Testo quotato

Postato originariamente da Abdizur:

Ho risolto in questo modo,
mi sono accorto che se passo dalla tetxbox al combobox premendo il tasto tab allora l'evento viene correttamente invocato, il problema esisteva quando ci cliccavo su, quindi..

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmb_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb.Click
  2.  
  3.         'Forzo la chiamata dell'evento GotFocus
  4.         Me.cmb_GotFocus(sender, e)
  5.     End Sub



Anche se non ho idea di cosa siano sender ed e!

Visto che ci sono, sapete come inserire il simbolo dell'euro in un textbox?



Per essere precisi, non forzi la chiamata dall'evento, ma del gestore dell'evento (che una procedura privata cmb_GotFocus).


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidit."
(Fligende Blatter)

"Dubitare di se stessi il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 11:21
Sabato, 21/08/2010
Testo quotato

Postato originariamente da HeDo:

Testo quotato

Postato originariamente da Iohoilpotere:
se vuoi risolvere in maniera piuttosto brutta, ci metti sopra un picturebox con l'immagine di una combobox disabilitata visibile soltanto quando la combobox disabilitata e gli dai l'evento desiderato. Ma davvero brutta come soluzione. Spero che qualcuno possa suggerirti meglio :D




una delle soluzioni pi brutte mai viste :D

PM Quote