2013-06-27 48 views
1

,当我想在Select Case定义值,我得到错误:vb.net选择案例错误

'Value' is not declared. It may be inaccessible due to its protection level. 

Dim Value As Object超出选择案例 - 没有错误。我的目标是根据特殊数字获得不​​同的价值。例如:

Select Case Integer 
    Case 1 
     Dim Value As New UserControl1 
    Case 2 
     Dim Value As New UserControl2 
    Case Else 
     Dim Value As New UserControl3 
End Select 
+1

查看vb范围规则。在select块中声明的变量将被限制在select块中。 –

+0

我不会命名一个变量'Value',特别是它是一个Object;很混乱。 –

回答

1

尝试此,假设所有3个用户控件类型从基部派生UserControl对象:

Dim Value as UserControl 
Select Case Integer 
    Case 1 
     Value = New UserControl1 
    Case 2 
     Value = New UserControl2 
    Case Else 
     Value = New UserControl3 
End Select 
1

它不是可通过声明范围以外的范围和访问它的内部变量比如select case语句。但是,通过分离声明和初始化,您可以轻松解决问题。这使您可以在选择大小写之外使用变量,因为变量位于较高范围内。该变量被声明为System.Windows.Controls.UserControl,因为这是最具体的常见类型。

Dim Value As UserControl 
Select Case Integer 
    Case 1 
     Value = New UserControl1 
    Case 2 
     Value = New UserControl2 
    Case Else 
     Value = New UserControl3 
End Select