2012-05-29 84 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,以避免后期绑定并允许它用严格的选项进行编译。 –