有没有办法在IF语句中设置VB.NET中的变量。我想做以下事情:
If (TypeOf sender Is TabControl And TypeOf e.Control Is TabPage) Then 'tab control is adding a tab page
AddControl(CType(e.Control, TabPage))
ElseIf (TypeOf sender Is TabPage) Then 'tab page is adding some control
AddControl(CType(sender, TabPage), e.Control)
ElseIf (tabPageFound = FindTabPageOf(sender)) IsNot Nothing Then
tabPageFound.SomeAction()
End if
有什么方法可以让最后一个“ElseIf”工作吗?我知道我可以重新编写它以使其工作但是有一些语法可以使它按原样运行吗?
答案 0 :(得分:3)
不,Visual Basic不支持该语法。
您唯一的选择是将变量byref传递给将为其分配并返回适当值的方法。
例如:
Function DoFindTabPageOf(ByRef tabPageFound As Control, sender As Object) As Control
tabPageFound = FindTabPageOf(sender)
Return tabPageFound
End Function
然后你的ElseIf变成:
ElseIf (DoFindTabPageOf(tabPageFound, sender) IsNot Nothing Then
答案 1 :(得分:3)
我不使用VB.NET(所以请注意语法错误)。但是,请注意,每个“else if”都可以简单地重写为带有嵌套“if”的“else”。许多语言(例如基于C语法的语言)没有复合“else if”语句,但对“挂起if”语句有更好的支持。
在这种情况下,它可能会被重写为:
If (TypeOf sender Is TabControl And TypeOf e.Control Is TabPage) Then
...
ElseIf (TypeOf sender Is TabPage) Then
...
Else
tabPageFound = FindTabPageOf(sender)
If (tabPageFound) IsNot Nothing Then
...
End
End If
需要考虑的事情。
为了完整起见,这显示了删除所有ElseIf
用法以及由此产生的嵌套:
If (TypeOf sender Is TabControl And TypeOf e.Control Is TabPage) Then
...
Else
If (TypeOf sender Is TabPage) Then
...
Else
tabPageFound = FindTabPageOf(sender)
If (tabPageFound) IsNot Nothing Then
...
End If
End If
End If
答案 2 :(得分:1)
我知道这会调用FindTabPageOf两次,但可以按如下方式完成。如果你想在某个地方进一步使用tabPageFound会变得更有害。
If (TypeOf sender Is TabControl And TypeOf e.Control Is TabPage) Then 'tab control is adding a tab page
AddControl(CType(e.Control, TabPage))
ElseIf (TypeOf sender Is TabPage) Then 'tab page is adding some control
AddControl(CType(sender, TabPage), e.Control)
ElseIf (FindTabPageOf(sender) IsNot Nothing) Then
FindTabPageOf(sender).SomeAction()
End if