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] Problema button: imposta l'immagine sbagliata
Forum - C# / VB.NET - [VB.NET] Problema button: imposta l'immagine sbagliata

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 16:16
Giovedì, 04/06/2009
Ho una checkbox che se viene attivata abilita un pulsante, senno questo rimane disattivo come la check, e se viene disattivata lo disattiva.
Il pulsante quando è attivo, al click cerca di fare una cosa, ci son due condizioni, se si verifca la seconda, mostra una messagebox di errore e poi disattiva la checkbox, che avendo in EnableChanged l'ordine di disattivare il button, va ad impostare in esso la proprietà enabled = false.
Il pulsante ha in in MouseEnter un'immagine, cosi come in MouseLeave, MouseDown, MouseUp ed EnableChanged. In quest'ultima, c'è un'immagine x il pulsante attivo e disattivo.

Il problema è questo: quando si verifica la seconda condizione, appare la messagebox, la checkbox viene disattivata, e questa disattiva il pulsante.
Il button allora richiama EnableChanged, ma non imposta l'immagine giusta.... O.o
(il progetto è sempre lo stesso, il problema si verifica al cambio dell'immaginex il pulsante......)

sotto metto un link dell'esempio

PLS HELP ME

http://www.mediafire.com/download.php?wbm2zk2zm24


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 23:37
Giovedì, 04/06/2009
Non riuscivo a inquadrare l'errore, così ho riscritto tutto da zero:
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Private Sub btnAvviaWoW_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.Click
  3.         If My.Computer.FileSystem.FileExists("tuofile") Then
  4.         Else
  5.             MsgBox("Errore", MsgBoxStyle.Critical)
  6.             CheckBox1.Checked = False
  7.         End If
  8.     End Sub
  9.  
  10.     Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
  11.         If CheckBox1.Checked = True Then
  12.             btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura
  13.             btnAvviaWoW.Enabled = True
  14.         Else
  15.             btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_disabl
  16.             btnAvviaWoW.Enabled = False
  17.         End If
  18.     End Sub
  19.  
  20.     Private Sub btnAvviaWoW_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnAvviaWoW.MouseDown
  21.         btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_click
  22.     End Sub
  23.  
  24.     Private Sub btnAvviaWoW_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.MouseEnter
  25.         btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_evid
  26.     End Sub
  27.  
  28.     Private Sub btnAvviaWoW_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.MouseLeave
  29.         btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura
  30.     End Sub
  31. End Class


Così funziona. Chiaramente devi modificare il percorso del file del quale deve essere controllata l'esistenza e il testo della msgbox, ma questo puoi anche farlo tu :D


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 15:06
Venerdì, 05/06/2009
Ok grazie mille, adx provo e ti so dire ^^


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 17:12
Venerdì, 05/06/2009
Niente cavolo continua a mettere l'immagine sbagliata!!
Ma che c....avolo succede? :alert::grr::alert:


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 17:31
Venerdì, 05/06/2009
Credo di aver capito, se noti, aggiungendo l'evento MouseUp al button, che imposta l'immagine evid., quando si chiude la messagbox, x qualche motivo, l'up del mouse del pulsante ok della msgbox cambia l'immaigne...
si puo intercettare la chiusura della messagebox x impostare l'immagine del pulsante al form1?


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:16
Venerdì, 05/06/2009
L'evento CheckedChanged si verifica solo se la proprietà viene modificata dall'interfaccia della form. Credo sia questo il tuo problema.

P.S.: più veloce
Codice sorgente - presumibilmente Plain Text

  1. btnAvviaWoW.Enabled = CheckBox1.Checked



"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
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 20:04
Venerdì, 05/06/2009
Allora, il pulsante in questione lancia una sub da un modulo(farei meglio a metterla nel form?), cmq è in questa sub che il secondo caso mostra la msgbox e disattiva la checkbox, ma alla fine, penso, è sempre il pulsante nel form1, in cui c'è anche la check....
Ho capito male?

P.S.  io penso che il problema risieda nella messagebox, quando clicco "ok", e rilascio il pulsante del mouse, si verifca l'evento mouseup(ma sulla msgbox) che nn so xk va a cambiare l'immagine bel button al form1

un'idea mia sarebbe aspettare che la msgbox si chiuda e poi disattivare la checkbox

P.P.S a che punto del codice si riferisce il tuo codice?

Ultima modifica effettuata da dedalux il 05/06/2009 alle 20:07


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 20:36
Venerdì, 05/06/2009
Testo quotato

Postato originariamente da dedalux:
P.P.S a che punto del codice si riferisce il tuo codice?


A questo:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
  2.         If CheckBox1.Checked = True Then
  3.             btnAvviaWoW.Enabled = True
  4.         Else
  5.             btnAvviaWoW.Enabled = False
  6.         End If
  7.     End Sub


In effetti è molto più semplice il codice di Totem :D non mi era venuto in mente di fare così :asd:


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 20:38
Venerdì, 05/06/2009
Qui http://msdn.microsoft.com/it-it/library/ww6cfk80.aspx#Mtps ... MSDN dice che "Una finestra di messaggio è una finestra di dialogo modale, vale a dire che non può essere interessata da alcun genere di input, da tastiera o da mouse, a esclusione degli input sugli oggetti presenti nel form modale. Il programma deve nascondere o chiudere il form modale, generalmente in risposta a un'operazione dell'utente, prima di inviare un input ad altri form. Mediante il parametro owner è possibile specificare un particolare oggetto, che implementa l'interfaccia IWin32Window che avrà funzione di finestra di primo livello e proprietaria della finestra di dialogo."

può essere una causa?

edit: lo avevo gia cambiato.... era una prova nel progetto che ho mostrato a voi, nella disperazione si prova di tutto... :rofl:

Ultima modifica effettuata da dedalux il 05/06/2009 alle 20:40


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo