Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

label automatica e memorizzante

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

label automatica e memorizzante

Postdi wittelsbach » 12/04/06 16:10

scusate ma come faccio a far compiere un'operazione (differenza) tra due textbox e far comparire il risultato in una label ma il tutto automatizzato non appena in una delle due textbox compare un numero?

E poi dopo aver eseguito tale operazione come faccio per far rimanere memorizzati i numeri inseriti nelle testbox e nella label di prima? Perché ogni volta che esco e rientro dal perogramma si cancellano!

Ciao e grazie!
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Sponsor
 

Postdi archimede » 12/04/06 16:44

Non capisco di cosa stai parlando. C/C++? Assembler? Access? AutoCad? ...

Un titolo e una esposizione del problema un po' più accurati aiuterebbero chi ti dovrebbe aiutare.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi wittelsbach » 12/04/06 17:21

scusa stavo parlando di Visual Basic
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi hydra » 12/04/06 19:28

Puoi utilizzare il metodo textchanged del textbox, al cui interno controlli che i valori dei due textbox siano dei numeri, dopodichè fai l'operazione di sottrazione dal valore dei due textbox, trasformando il testo in cifra (in questo modo il label cambia automaticamente a ogni cifra digitata, senza bisogno di conferme).

Codice: Seleziona tutto
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, _ TextBox2.TextChanged
        If IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text) Then
            Label1.Text = (Convert.ToDouble(TextBox1.Text) - Convert.ToDouble(TextBox2.Text)).ToString
        End If
End Sub


Altrimenti puoi usare un timer, ma è meno elegante. :D

Se vuoi che i dati rimangano dopo che hai chiuso l'applicazione li devi salvare.
Avatar utente
hydra
Moderatore
 
Post: 7002
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi wittelsbach » 13/04/06 08:52

grazie mille!
Ciao
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi wittelsbach » 13/04/06 10:13

eseguendo l'istruzione però ci sarebbe un problemino: in pratica funziona bene solo che se dopo aver inserito un numero in una textbox, ci ripensassi e decidessi di cambiarlo cancellandolo, nella label non viene rifatto il calcolo automaticamente e rimane visualizzato il calcolo con i valori precedenti.
E comunque come faccio a far capire al programma che quando nella textbox non c'è scritto niente lo deve considerare come un valore numerico pari a zero?

Ciao
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi hydra » 13/04/06 10:46

Beh, devi fare i vari casi dentro l'if, mentre poi fai un else (che vuol dire che non hai un numero) e resetti il label o lo metti a 0.
Avatar utente
hydra
Moderatore
 
Post: 7002
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 13/04/06 11:06

Anzi, viene più semplice usando delle variabili locali:

Codice: Seleziona tutto
Dim A, B As Double

If IsNumeric(TextBox1.Text) Then
    A = Convert.ToDouble(TextBox1.Text)
End If
If IsNumeric(TextBox2.Text) Then
    B = Convert.ToDouble(TextBox2.Text)
End If

Label1.Text = (A - B).ToString


In questo caso basta che tu abbia un qualsiasi numero su uno dei due textbox e lui ti scrive il risultato, in quanto se l'altro textbox non contiene un numero (quindi se è "" oppure una qualsiasi altra stringa non numerica) allora viene considerato come 0. ;)
Avatar utente
hydra
Moderatore
 
Post: 7002
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi wittelsbach » 13/04/06 13:20

grazie mille! Avevo provato anch'io usando altre variabili. Comunque ora riprovo come hai detto tu!
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi wittelsbach » 13/04/06 14:03

Ho provato ma il problema non si risolve.
Quando io scrivo per esempio "7" nella textbox1 e "3" nella textbox2, il risultato corretto va a finire nella label1. E qui tutto OK.
Ma se poi vado a cancellare il "3", il risultato nella label rimane quello di prima (ovvero 7-3). Per farlo funzionare di nuovo devo scrivere "0" all'interno della testbox che voglio rimanga vuota. Io vorrei invece che la casella vuota fosse considerata "0" oppure che lo "0" sia sempre presente in entrambe le caselle.
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi hydra » 13/04/06 15:10

Strano, a me funziona. Ovviamente o il codice lo metti in tutti e due i metodi (textbox1_textchanged e textbox2_textchanged) oppure aggiungi all'handle del metodo il riferimento ai vari textbox.
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged
Avatar utente
hydra
Moderatore
 
Post: 7002
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi wittelsbach » 13/04/06 17:13

ho risolto aggiungendo all'handle tutte le textbox.
Grazie mille!
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi hydra » 13/04/06 17:14

Prego. :D
Avatar utente
hydra
Moderatore
 
Post: 7002
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis


Torna a Programmazione


Topic correlati a "label automatica e memorizzante":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti