2012-05-29 86 views
2

如何擺脫組合框中的值以適應examgrade中的公式?無效的演員表達?

我試圖通過在MSDN上查找來解決它,但無法弄清楚。 我試過使用Examgrade =().ToString但沒有奏效。

希望你們能指點我正確的方向。僅供參考這是我的第一個真正的程序,我成功地在C#中做了一次,但刪除了源文件,所以這是Visual Basic,並且更容易實現這一目標。

星號標記的問題行

Public Class Calculator 
Dim quarter3 As Integer 
Dim quarter4 As Integer 
Dim desiredgrade As String 
Dim examgrade As String 

Private Sub Button1_Click(ByVal sender As System.Object, _ 
ByVal e As System.EventArgs) Handles Button1.Click 
    quarter3 = TextBox1.Text 
    quarter4 = TextBox2.Text 
    desiredgrade = ComboBox1.Text 
    ****examgrade = ((desiredgrade - (quarter3 * 0.4) - _ 
    (quarter4 * 0.4))/0.2)**** 

    If examgrade > 100 Then 
     Label5.Text = examgrade + " YOLO" 
    ElseIf examgrade < 0 Then 
     Label5.Text = "Impossible" 
    Else 
     Label5.Text = examgrade 
    End If 
End Sub 

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender _ 
As System.Object, ByVal e As System.EventArgs) Handles _ 
ComboBox1.SelectedIndexChanged 
    Dim A As Integer 
    Dim B As Integer 
    Dim C As Integer 
    Dim D As Integer 
    A = 90 
    B = 80 
    C = 70 
    D = 60 
    ComboBox1.EndUpdate() 
End Sub 
End Class 
+1

如果您將** Option Strict On **作爲該文件的第一行,它將向您顯示變量類型與您分配給它們的內容不匹配的位置。另外,爲什麼ComboBox1.EndUpdate()沒有相應的ComboBox1.BeginUpdate(),特別是因爲你沒有改變ComboBox1? –

回答

2

desiredgrade是一個字符串

examgrade = ((Double.Parse(desiredgrade) - (quarter3 * 0.4) - _ 
      (quarter4 * 0.4))/0.2).ToString() 

我使用Double。如果需要,您也可以使用Integer

examgrade = ((Integer.Parse(desiredgrade) - (quarter3 * 0.4) - _ 
      (quarter4 * 0.4))/0.2).ToString() 
1

除非有具有examgrade爲String一個具體的理由,請嘗試以下操作:當你把它分配給你的標籤

Dim examgrade as Integer 

examgrade = ((CInt(desiredgrade) - (quarter3 * 0.4) - _ 
(quarter4 * 0.4))/0.2) 

VB將自動轉換examgrade爲String。

+0

...或者做到悉達多推薦的方式之一....我幾乎是積極的,他知道更多關於VB比我:) –

+0

有幾種方法可以做到這一點。我猜用戶將組合的值存儲在一個變量中,因此用戶將'desiredgrade'聲明爲一個字符串:)他也可以將Dim desiredgrade作爲Interger = Integer.Parse(ComboBox1.Text)你提到的還適當地宣佈了「考試」。在這種情況下,我想'雙#'我猜... –

+1

@TylerG您寫了「VB會自動將檢測到轉換爲字符串,當您將它分配給您的標籤」,但是,最好明確使用examgrade.ToString,以避免後期綁定並允許它用嚴格的選項進行編譯。 –