Vb.net 无效的强制转换表达式?

Vb.net 无效的强制转换表达式?,vb.net,Vb.net,如何从组合框中的值中去除无效的强制转换表达式,以适应examgrade中的等式 我试图通过查MSDN之类的东西来解决这个问题,但没办法解决。 我尝试使用Examgrade=()。ToString,但没有成功 希望你们能给我指出正确的方向。仅供参考,这是我第一个真正的程序,我曾在C#中成功制作过一次,但删除了源文件,因此这是Visual Basic,更容易实现 星号标记问题行 Public Class Calculator Dim quarter3 As Integer Dim quarter4

如何从组合框中的值中去除无效的强制转换表达式,以适应
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
公共类计算器
四分之一整数
四分之一整数
像弦一样变暗
Dim examgrade作为字符串
私有子按钮1\u单击(ByVal发送者作为System.Object_
ByVal e作为System.EventArgs)处理按钮1。单击
quarter3=TextBox1.Text
quarter4=TextBox2.Text
desiredgrade=ComboBox1.Text
****examgrade=((期望等级-(四分之三*0.4)-_
(四分之一*0.4))/0.2)****
如果examgrade>100,则
Label5.Text=examgrade+“YOLO”
ElseIf examgrade<0则
标签5.Text=“不可能”
其他的
Label5.Text=examgrade
如果结束
端接头
专用子组合框1\u选择的索引已更改(ByVal sender_
作为System.Object,ByVal e作为System.EventArgs)处理_
ComboBox1.SelectedIndex已更改
将A变暗为整数
作为整数的Dim B
作为整数的Dim C
作为整数的Dim D
A=90
B=80
C=70
D=60
ComboBox1.EndUpdate()
端接头
末级

desiredgrade
是一个字符串

examgrade = ((Double.Parse(desiredgrade) - (quarter3 * 0.4) - _
            (quarter4 * 0.4)) / 0.2).ToString()
我正在使用
Double
。如果需要,还可以使用
整数

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

除非有特定原因将examgrade作为字符串,否则请尝试以下操作:

Dim examgrade as Integer

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

当您将examgrade分配给标签时,VB将自动将其转换为字符串。

…或者按照Siddharth建议的方法之一进行转换…我几乎可以肯定他比我更了解VB:)有几种方法。我猜用户正在将组合的值存储在一个变量中,因此用户将
desiredgrade
声明为字符串:)他也可以将
Dim desiredgrade声明为Integer=Integer.Parse(ComboBox1.Text)
,就像您提到的那样,还适当地声明了
examgrade
。A
Double
在本例中,我猜…@TylerG您写道“当您将examgrade分配给标签时,VB将自动将其转换为字符串”,但是,最好显式使用examgrade.ToString以避免后期绑定,并允许它使用选项strict on进行编译。如果您将选项strict on作为该文件的第一行,它将显示变量类型与分配给它们的变量类型不匹配的地方。另外,为什么ComboBox1.EndUpdate()没有相应的ComboBox1.BeginUpdate(),特别是在您没有更改ComboBox1的情况下?