按钮的宽度为123.为什么以下不改变宽度
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
With Me.Button3
IIf(.Width = 123, .Width = 233, .Width = 150)
End With
End Sub
IIF是否只返回一个值?即如果我想设置按钮的宽度属性,那么我是否需要使用If结构?
在MSDN
中很少谈到Iif答案 0 :(得分:2)
您的代码测试.Width = 123
,如果为true,则返回布尔表达式.Width = 233
;如果为false,则返回.Width = 150
,然后将结果抛出。这不是你想要的。您有三种选择:
' IIf function - not recommended since it is not typesafe and evaluates all arguments.
.Width = IIf(.Width = 123, 233, 150)
' If operator - typesafe and only evaluates arguments as necessary.
.Width = If(.Width = 123, 233, 150)
' If statement - not an expression.
If .Width = 123 Then .Width = 233 Else .Width = 150
答案 1 :(得分:2)
使用VB.NEt的if() - 语句。它被称为'条件运算符'并以多种语言存在。 IIf是一个特定于VB的函数,具有不同的行为。 更多信息: Performance difference between IIf() and If
在这两种情况下,IIf和If只返回一个值(IIF类型不是键入的;它是一个必须被转换的对象)。无论如何,它似乎做了你想要的事情:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Button3.Width = If(Button3.Width = 123, 233, 150)
End Sub
答案 2 :(得分:1)
IIF是否只返回一个值?
是
即如果我想设置按钮的width属性,那么我是否需要使用If结构?
不,因为您可以将返回值分配给Width
属性:
With Me.Button3
.Width = IIf(.Width = 123, 233, 150)
End With
请注意,在当前版本的VB.NET中,应使用If Operator而不是Iif,因为它具有多种优势(类型安全,短路等)。例如,使用If(...)
将允许您的代码在没有额外强制转换的情况下进行编译,即使您有Option Strict On
(您应该这样做)。
With Me.Button3
.Width = If(.Width = 123, 233, 150)
End With