2014-02-12 80 views
0

我正在做一個任務。它已經完成了,但我想找出更有效的方式來在未來的項目中使用布爾值。VB.Net布爾參數

我有多個功能需要驗證。我嘗試過沒有成功的爭論,不得不爲每個函數創建單獨的布爾值。

我的代碼是

Function valChargeParts() As Boolean 
    Try 
     If Decimal.TryParse(CDec(txtParts.Text), 1) Then 
      If CDec(txtParts.Text) >= 0 Then 
        Return True 
       End If 
      End If 
    Catch ex As Exception 
    End Try 
     Return False 
End Function 

Function valChargeLabor() As Boolean 
    Try 
     If Decimal.TryParse(CDec(txtLabor.Text), 1) Then 
      If CDec(txtLabor.Text) >= 0 Then 
       Return True 
      End If 
     End If 
    Catch ex As Exception 
    End Try 
    Return False 
End Function 

Function CalcPartsCharges() As Decimal 
    Dim totalParts As Integer = 0 

    If valChargeParts() = True Then 
     totalParts += CDec(txtParts.Text) 
    End If 

    Return totalParts 
End Function 

Function CalcLaborCharges() As Decimal 
    Dim totalLabor As Integer = 20 

    If valChargeLabor() = True Then 
     totalLabor *= CDec(txtLabor.Text) 
    End If 

    Return totalLabor 
End Function 

我試過很多可能的方法來我的知識創造參數,如;

Function valChargeLabor(ByVal variable as Decimal) As Boolean 

和使用功能的嘗試,

If Decimal.TryParse(variable, 1) Then 

,但沒有奏效。我不確定我做錯了什麼。

在此先感謝。

+0

我想創建只有1個布爾參數,並使用所有功能,而不是每個驗證創建新的布爾值。如bolValidate,而不是bolValidateTextbox1,bolValidateTextbox2,bolValidateTextbox3。所有的文本框將被驗證,如果數值輸入或沒有,等 –

+0

使用參數是要走的路。向我們展示如何用參數調用你的函數 –

回答

1

你的代碼看你使用的是的TryParse方法,它不會給你一個錯誤,如果它不能轉換,再加上使用多個鑄造到小數,在我看來是不需要的。我做了一個普通的例程,如果它可以轉換,它將返回一個布爾值,並且它將通過引用實際轉換的值來傳遞,因此它將使它像您自己的TryParse語句一樣。

這是一個簡單的修改應用程序來演示我在說什麼。

Public Class Form1 
    Dim totalParts As Decimal = 0 
    Function validateInput(value As String, ByRef output As Decimal) As Boolean 
     Return Decimal.TryParse(value, output) 
    End Function 

    Function CalcPartsCharges() As Decimal 
     Dim tempParts As Decimal = 0 

     If validateInput(txtParts.Text, tempParts) Then 
      totalParts += tempParts 
     End If 

     Return totalParts 
    End Function 



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Label1.Text = CalcPartsCharges().ToString() 
    End Sub 
End Class 
+0

這很簡單,而且要短得多。我感謝幫助! –

1

試試這個

Function IsValidDecimal(ByVal txt As String) As Boolean 
    Try 
     Dim t As Decimal = 0 
     If Decimal.TryParse(txt, t) Then 
      If t >= 0 Then 
       Return True 
      End If 
     End If 
    Catch ex As Exception 
    End Try 
    Return False 
End Function  

Function CalcPartsCharges() As Decimal 
    If Me.IsValidDecimal(Me.txtParts.Text) Then Return CDec(Me.txtParts.Text) 
    Return 0 
End Function 

Function CalcLaborCharges() As Decimal 
    If Me.IsValidDecimal(Me.txtLabor.Text) Then Return CDec(Me.txtLabor.Text) * 20 
    Return 0 
End Function 

或者乾脆

Function GetDecimal(ByVal txt As String) As Decimal 
    Dim t As Decimal = 0 
    Try 
     If Not Decimal.TryParse(txt, t) Then Return 0 
     If t < 0 Then t = 0 
    Catch ex As Exception 
    End Try 
    Return t 
End Function 

Function CalcPartsCharges() As Decimal 
    Return Me.GetDecimal(Me.txtParts.Text) 
End Function 

Function CalcLaborCharges() As Decimal 
    Return Me.GetDecimal(Me.txtLabor.Text) * 20 
End Function 
+0

我還在學習VB,我還沒有練習過我的語句,但我會試着熟悉它。我很感激! –

+0

@ValeriaKaya,Me只是當前類的別名,你可以放棄它,但爲了清楚說明函數/方法或變量的位置,也許它會幫助你列舉所有可用的函數,屬性,事件等(點)後打開。 – Jade