2016-07-26 66 views
1

如果要插入一個變量窗體2,我用這個..定義窗體轉換變量vb.net

Dim Variable As New Form2 

但是,如果我有名字相同的功能有兩種形式,我會用它做如果。

if 1 = 1 Then 
    Dim Variable As New Form2 
Else 
    Dim Variable As New Form3 
End If 

這是完全正常的,但如果我開始使用下面的代碼這個變量,如果我使用無條件,一切都很好發生錯誤,使用時的條件似乎明白該怎麼做。

Variable.DataGridView1.Rows.Add(row) 

對象引用未設置爲實例的對象

+0

你創建一個本地變量,並且不再設置您的全球價值'Variable'採取'dim'出來,即:'變量=新Form3() ' – asawyer

+1

你最好已經有一個form2和form3變量,並根據條件簡單地使用你想要的變量。一個'If'語句會創建一個新的塊範圍 - 其中聲明的任何內容都將只存在於這個範圍內。 – Plutonix

+0

...這是爲了避免你的下一個問題*我怎麼知道變量是Form2還是Form3? – Plutonix

回答

1

需要聲明的變量第一,然後將其分配給特定類型的:

Dim Variable As Form = Nothing 
If 1 = 1 Then 
    Variable = New Form2() 
Else 
    Variable = New Form3() 
End If 

但通常你可以通過實現通用接口的每個表單在面向對象的方法中做到這一點。

然後你可以這樣做:

Dim Variable As IForm 
If 1 = 1 Then 
    Variable = New Form2() 'Form2 implements IForm 
Else 
    Variable = New Form3() 'Form3 implements IForm 
End If