dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/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
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Non riuscivo a inquadrare l'errore, così ho riscritto tutto da zero:
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Sub btnAvviaWoW_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.Click If My.Computer.FileSystem.FileExists("tuofile") Then Else MsgBox("Errore", MsgBoxStyle.Critical) CheckBox1.Checked = False End If End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura btnAvviaWoW.Enabled = True Else btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_disabl btnAvviaWoW.Enabled = False End If End Sub Private Sub btnAvviaWoW_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnAvviaWoW.MouseDown btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_click End Sub Private Sub btnAvviaWoW_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.MouseEnter btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura_evid End Sub Private Sub btnAvviaWoW_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAvviaWoW.MouseLeave btnAvviaWoW.BackgroundImage = My.Resources.ProvaSenzaTesto_sfumatura End Sub 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
|
|
dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/2009
|
Ok grazie mille, adx provo e ti so dire ^^
|
|
dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/2009
|
Niente cavolo continua a mettere l'immagine sbagliata!!
Ma che c....avolo succede?
|
|
dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/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?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
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 |
btnAvviaWoW.Enabled = CheckBox1.Checked
|
|
|
dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/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 |
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Postato originariamente da dedalux:
P.P.S a che punto del codice si riferisce il tuo codice? |
A questo:
Codice sorgente - presumibilmente VB.NET |
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then btnAvviaWoW.Enabled = True Else btnAvviaWoW.Enabled = False End If End Sub
|
In effetti è molto più semplice il codice di Totem non mi era venuto in mente di fare così |
|
dedalux (Normal User)
Pro
Messaggi: 155
Iscritto: 14/02/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...
Ultima modifica effettuata da dedalux il 05/06/2009 alle 20:40 |
|