2015-11-07 58 views
-2

条件请帮我缩短了下面的代码:倍数。如果在VB.NET

If Val(TB.Text) = 0 Then 
    OvalShape1.BackColor = Color.Gray 
ElseIf Val(TB.Text) = 1 Then 
    OvalShape1.BackColor = Color.Lime 
ElseIf Val(TB.Text) = 2 Then 
    OvalShape1.BackColor = Color.Red 
ElseIf Val(TB.Text) = 3 Then 
    OvalShape1.BackColor = Color.White 
End If 
+1

你可以保持颜色的数组,如果该值的范围内检查一次。如果是,那么做'OvalShape1.BackColor = colors [TB.Text]'。无论如何在概念上;我不是个男人。 – ChiefTwoPencils

回答

1

这将做到这一点:

Dim colors As System.Drawing.Color() = {Color.Gray, Color.Lime, Color.Red, Color.White} 

OvalShape1.BackColor = colors(Val(TB.Text)) 

但最好是添加一些验证,支付无效输入TB.Text会导致运行时错误。这里是更长的时间,但更好的代码:

Dim colors As System.Drawing.Color() = {Color.Gray, Color.Lime, Color.Red, Color.White} 
Dim value as Integer 

value = Val(TB.Text) 
If value >= 0 And value <= colors.GetUpperBound(0) Then 
    OvalShape1.BackColor = colors(value) 
End If 
+0

谢谢你trincot ..它的工作,只是不得不改变类型System.Drawing.Color的值不能转换为'长'的声明... – Prashant

+0

啊我看到了,我更正了答案 – trincot

+0

...和我现在看到你作为一个单独的答案公布了更正,这将是很好,虽然给信用和接受作为答案。 – trincot