Newsgroup: it.comp.lang.visual-basic
Titolo: [Cambiare tanti if in...] mi aiutate pf ?

Salve,
cerco di provare a fare un piccolo convertitore di unità di misura e,
mi è venuto questo sconcio.
Avete idea di come possa fare a ridurre questo sbrodolo (animalesco)
di codice ?
Questo converte unità di lunghezza.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
        Button1.Enabled = False
        If TextBox1.Text <> "" Then
            TextBox2.Text = (TextBox1.Text * 0.1)
            TextBox3.Text = (TextBox1.Text * 0.001)
            TextBox4.Text = (TextBox1.Text * 0.000001)
            TextBox5.Text = (TextBox1.Text * 0.0393)
            TextBox6.Text = (TextBox1.Text * 0.00328)
            TextBox7.Text = (TextBox1.Text * 0.001093)
            TextBox8.Text = (TextBox1.Text * 0.00000062137119)
        ElseIf TextBox2.Text <> "" Then
            TextBox1.Text = (TextBox2.Text * 10)
            TextBox3.Text = (TextBox2.Text * 0.01)
            TextBox4.Text = (TextBox2.Text * 0.00001)
            TextBox5.Text = (TextBox2.Text * 0.3937)
            TextBox6.Text = (TextBox2.Text * 0.0328)
            TextBox7.Text = (TextBox2.Text * 0.01093)
            TextBox8.Text = (TextBox2.Text * 0.0000062)
        ElseIf TextBox3.Text <> "" Then
            TextBox1.Text = (TextBox3.Text * 1000)
            TextBox2.Text = (TextBox3.Text * 100)
            TextBox4.Text = (TextBox3.Text * 0.001)
            TextBox5.Text = (TextBox3.Text * 39.37)
            TextBox6.Text = (TextBox3.Text * 32.8)
            TextBox7.Text = (TextBox3.Text * 1.093)
            TextBox8.Text = (TextBox3.Text * 0.000621)
        ElseIf TextBox4.Text <> "" Then
            TextBox1.Text = (TextBox4.Text * 1000000)
            TextBox2.Text = (TextBox4.Text * 100000)
            TextBox3.Text = (TextBox4.Text * 1000)
            TextBox5.Text = (TextBox4.Text * 39370.078)
            TextBox6.Text = (TextBox4.Text * 3280.839)
            TextBox7.Text = (TextBox4.Text * 1093.613)
            TextBox8.Text = (TextBox4.Text * 0.6213)
        ElseIf TextBox5.Text <> "" Then
            TextBox1.Text = (TextBox5.Text * 25.4)
            TextBox2.Text = (TextBox5.Text * 2.54)
            TextBox3.Text = (TextBox5.Text * 0.0254)
            TextBox4.Text = (TextBox5.Text * 0.0000254)
            TextBox6.Text = (TextBox5.Text * 0.0833333)
            TextBox7.Text = (TextBox5.Text * 0.0277778)
            TextBox8.Text = (TextBox5.Text * 0.0000158)
        ElseIf TextBox6.Text <> "" Then
            TextBox1.Text = (TextBox6.Text * 304.8)
            TextBox2.Text = (TextBox6.Text * 30.48)
            TextBox3.Text = (TextBox6.Text * 0.3048)
            TextBox4.Text = (TextBox6.Text * 0.0003048)
            TextBox5.Text = (TextBox6.Text * 12)
            TextBox7.Text = (TextBox6.Text * 0.3333333)
            TextBox8.Text = (TextBox6.Text * 0.0001894)
        ElseIf TextBox7.Text <> "" Then
            TextBox1.Text = (TextBox7.Text * 914.4)
            TextBox2.Text = (TextBox7.Text * 91.44)
            TextBox3.Text = (TextBox7.Text * 0.9144)
            TextBox4.Text = (TextBox7.Text * 0.0009144)
            TextBox5.Text = (TextBox7.Text * 36)
            TextBox6.Text = (TextBox7.Text * 3)
            TextBox8.Text = (TextBox7.Text * 0.0005682)
        ElseIf TextBox8.Text <> "" Then
            TextBox1.Text = (TextBox8.Text * 1609344)
            TextBox2.Text = (TextBox8.Text * 160934.4)
            TextBox3.Text = (TextBox8.Text * 1609.344)
            TextBox4.Text = (TextBox8.Text * 1.609344)
            TextBox5.Text = (TextBox8.Text * 63360)
            TextBox6.Text = (TextBox8.Text * 5280)
            TextBox7.Text = (TextBox8.Text * 1760)
        End If
    End Sub
Grazie mille a tutti
Rodolfo

 ha scritto nel messaggio 
news:80fb5a9b-59e4-4915...@l39g2000yqn.googlegroups.com...



Io comincerei prima  a dichiarare una matrice di controlli TextBox
in modo da indicizzarli con un ciclo for...next
tipo TextBox(0...6).Text
Poi o fare delle costanti oppure scrivere le costanti in un file
for idx = 0 to 7
    for idx2 = 0 to 7
        if idx2 <> idx then
             Valore = leggo_da_file_la costante ' qui a modificato se leggi 
da costante o da file
             TextBox(idx2).Text = TextBox(idx2).Text * Valore
       end if
   next idx2
next idx
Più o meno, con qualche aggiusto dovrebbe essere così...
Genesio

grazie mille, proverò


 grazie mille, proverò
zac
Ogni conversione di misura in genere è una equivalenza!...almeno mi
ricordo così dalle elementari!
Quindi tutto si traduce in
Interfaccia più o meno carina.....che serve a farmi mettere nella var
START la "roba" a convertire...
e a farmi mettere nella var MISURA un selettore per scegliere la
formula di conversione!
A quel punto
si può fare con i delegate con una sub con quello che vuoi
Ad esempio
SELECT CASE MISURA
   CASE "MM"
        START=START /1000
CASE "CM"
     START=START/1000
CASE "MIGLIOMARINO"
START=START*0,5396
end select
etc etc etc


wrote:

mm e cm sono sbagliate.....volutamente sbagliate....a te aggiustare
(trovare) le giuste formule di conversione!!!



Grazie 1000, ...si ho visto.