Newsgroup: it.comp.lang.visual-basic
Titolo: [VB.NET] Dubbio su if..then

Scusate se faccio una domanda che ai più esperti potrebbe essere 
stupida, ma sono alle prime armi e voglio iniziare ad ampliare le mie 
conoscenze.
Attualmente ho una struttura di questo tipo (metto dati semplici solo 
come esempio):
if tbx1.Text="" then
   msgbox("xyz")
else if tbx2.Text"" then
   msgbox("xyzz")
end if
a=tbx1.Text
b=tbx2.Text
Come si evince da sopra, il programma controlla se in tbx1 c'è un testo, 
se non c'è nulla dà un messaggio, poi passa oltre la struttura if...then 
e dà errore sulla riga a=tbx1.Text.
Se c'è un testo in tbx1 va a controllare se in tbx2 c'è un testo, ed 
anche in questo caso se non c'è nulla dà un messaggio, poi passa oltre e 
dà errore sulla riga b=tbx2.Text.
Io vorrei sapere come fare a dirgli di rileggere la struttura if..then 
finchè in tbx1 e tbx2 non venga inserito del testo.
Grazie a chi mi potrà aiutare.
Christian

Puoi usare uno cilco. Puoi usare il ciclo do while. Puoi 
impostare come condizione di uscita un test per verificare se la 
proprieta text è diversa da "".
Spero di esserti stato utile.
Christian ha scritto:

--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

 finchè in tbx1 e tbx2 non venga inserito del testo.
Devi usare un ciclo DO WHILE... LOOP
Un piccolo esempio:
Do While TextBox1.Text.Length = 0
    Dim a As MsgBoxResult = MsgBox("Vuoi inserire del testo?", 
MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation, "Prova")
    If a = MsgBoxResult.Yes Then
        Exit Do
    End If
Loop
Ciao, Vincenzo 

 Loop
Grazie a tutti e due, appena ho un attimo di tempo me lo studio per 
bene.
In effetti il ciclo do...loop non me lo sono ancora studiato, colmerň a 
breve questa mia lacuna.
Christian

VincePik says...

Vincenzo, il tuo intervento è stato interessante, purtroppo non funziona 
bene.
Tu metti un msgbox con due bottoni, a me ne serve solo uno di avviso, 
però anche cliccando su "si" non permette di chiudere la msgbox e 
riempire la txtbox.
Il punto è qui: a me serve che tre campi siano riempiti per un calcolo e 
se uno, due o tutti e tre sono vuoti, arriva il messaggio di errore.
Come si può fare?
Christian

 Come si puņ fare?
L'esempio postato a me funziona bene! Logicamente per 3 controlli devi fare 
una cosa del genere.
In un button inserisci questo codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
    Do While (TextBox1.Text.Length = 0 Or TextBox2.Text.Length = 0 Or 
TextBox3.Text.Length = 0)
        Dim a As MsgBoxResult = MsgBox("Vuoi inserire del testo?", 
MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation, "Prova")
        If a = MsgBoxResult.Yes Then
            Exit Do
        End If
    Loop
End Sub
Ciao, Vincenzo 

 End Sub
Tra le due righe qui sopra ho inserito i calcoli delle tre textbox, che 
dovranno essere elaborati solo se le tre textbox conterranno dei dati.
Spero d'aver chiarito il mio problema, in caso contrario chiedi pure.
Christian

Il controllo dei textbox lo faccio da un pulsante, quindi clicco il button1
e se una delle textbox ha lunghezza = 0 , viene fuori il messaggio al quale
dovrò rispondere si se voglio inserire del testo e no se voglio continuare a
rimanere nel ciclo DO...Loop. Non so quello che vuoi fare ma in qualche modo
dovrai pure uscire dal ciclo Do..loop altrimenti il programma rimarrà a
girare a vita li dentro. Se non vuoi usare un Button potresti provare a
mettere il controllo delle text in un timer. Ma finchè non mi spieghi bene
lo scopo finale del programmino, non posso aiutarti diversamente.
Ciao, Vincenzo

 lo scopo finale del programmino, non posso aiutarti diversamente.
Approfitto allora della tua gentilezza per spiegarti nel dettaglio cosa 
vorrei fare.
Ho quattro campi textbox:
tbxQt (quantitą)                 Dim Qt As Integer
tbxPrezzo (Prezzo)               Dim Prezzo As Integer
tbxComm (Commissioni)            Dim Comm As Integer
tbxVal (Valore totale)           Dim Val As Integer
Ed un elemento pulsante:
btnCalcola
Cliccando sull'elemento pulsante si dovrebbero attivare queste righe:
Qt = tbxQt.Text
Prezzo = tbxPrezzo.Text
Comm = tbxPrezzo.Text
Val = (Qt * Prezzo) - Comm
tbxValCorr.Text = Val
Prima di queste righe, sempre all'interno della routine relativa 
all'elemento pulsante, vanno inserite le righe di codice che dovrebbero 
fare un controllo sulle tre textbox (le quali dovrebbero essere piene e 
contenere solo numeri) e dare messaggio d'errore nel caso in cui non 
soddisfino queste condizioni.
Una volta uscito il messaggio d'errore e dato OK per chiuderlo, il 
cursore dovrebbe andare subito nel campo dove mancano i dati per 
permettere all'utente d'inserirli, cosicchč al prossimo click 
dell'elemento pulsante si fa un altro controllo per verificare se tutti 
i dati sono presenti nei tre campi.
Credo d'aver spiegato bene quello che vorrei fare: come si fa?
Christian

 i dati sono presenti nei tre campi.
Mi sono scervellato nel fine settimana e ho risolto un una inputbox, 
purtroppo con una msgbox non ne sono venuto a capo e quindi ho cambiato 
completamente.
Poi ho fatto un do...loop per ogni textbox, che esce dal loop se 
.lenght=0
Se avete consigli su come sostituire l'inputbox con una msgbox che 
rimanda al campo vuoto, sono tutt'orecchi.
Christian