2010-05-24 5 views
1

J'ai ceci comme mon programme de conversion pour la "longueur", comment puis-je le faire de la manière la plus simple au lieu de garder le si, sinon, sinon trop, je n'ai pas beaucoup d'expérience et essayant d'améliorer mes compétences en programmation sur visual studio 2008.Visual Studio Conversion Suite

Fondamentalement, je suis ennuyé avec les formules parce que je ne sais pas si c'est juste, j'utilise google mais n'aide pas parce que je ne sais pas comment le faire correctement lorsque le programme convertit de type en type.

Public Class Form2 
    Dim Metres As Integer 
    Dim Centimetres As Integer 
    Dim Inches As Integer 
    Dim Feet As Integer 
    Dim Total As Integer 

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     ErrorMsg.Hide() 
    End Sub 

    Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click 

     Metres = 1 
     Centimetres = 0.01 
     Inches = 0.0254 
     Feet = 0.3048 

     txtTo.Text = 0 

     If txtFrom.Text <> "" Then 
      If IsNumeric(txtFrom.Text) And IsNumeric(txtTo.Text) Then 

       If cbFrom.Text = "Metres" And cbTo.Text = "Centimetres" Then 
        Total = txtFrom.Text * Metres 
        txtTo.Text = Total 
       ElseIf cbFrom.Text = "Metres" And cbTo.Text = "Inches" Then 
        Total = txtFrom.Text * 100 
        txtTo.Text = Total 
       ElseIf cbFrom.Text = "Metres" And cbTo.Text = "Feet" Then 

       ElseIf cbFrom.Text = "Centimetres" And cbTo.Text = "Metres" Then 

       ElseIf cbFrom.Text = "Centimetres" And cbTo.Text = "Inches" Then 

       ElseIf cbFrom.Text = "Centimetres" And cbTo.Text = "Feet" Then 

       ElseIf cbFrom.Text = "Inches" And cbTo.Text = "Metres" Then 

       ElseIf cbFrom.Text = "Inches" And cbTo.Text = "Centimetres" Then 

       ElseIf cbFrom.Text = "Inches" And cbTo.Text = "Feet" Then 

       ElseIf cbFrom.Text = "Feet" And cbTo.Text = "Metres" Then 

       ElseIf cbFrom.Text = "Feet" And cbTo.Text = "Centimetres" Then 

       ElseIf cbFrom.Text = "Feet" And cbTo.Text = "Inches" Then 

       End If 

      End If 
     End If 
    End Sub 
End Class 

Ceci est la source de ce que j'ai fait pour le moment.

Répondre

0

Une approche de base consisterait à diviser la gestion de la conversion "from" et "to" en utilisant un format intermédiaire.

Ainsi, le code de programme serait similaire à quelque chose comme ceci:

Dim intermediate as Double //Intermediate format in centimeters 
Dim result as Double 
Dim inputValue as Double = cDbl(txtFrom.Text) 

If cbFrom.Text = "Metres" Then 
    intermediate = inputValue * 100 
else if cbFrom.Text = "Centimetres" Then 
    intermediate = inputValue 
else if 
    ... 
End If 

If cbTo.Text = "Metres" Then 
    result = intermediate/100 
else if cbTo.Text = "Centimetres" Then 
    result = intermediate 
End If 

txtTo.Text = Math.Round(result, 2) //Round optional :) 

En utilisant cette approche vous avez seulement à vous soucier de la conversion vers et à partir de votre format intermédiaire et vous avez seulement pour gérer chaque format d'entrée et de sortie une fois (au lieu d'écrire des conversions personnalisées pour chaque paire entrée/sortie).

Questions connexes