2013-06-27 107 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