2016-07-26 18 views
1

Wenn Sie eine Variable Form2 einfügen möchten, verwende ich diese ..definieren Formular in variable vb.net

Dim Variable As New Form2 

Aber wenn ich die gleichen Funktionen mit Namen in zwei Formen haben, ich werde es tun, mit ob.

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

Die völlig in Ordnung ist, aber wenn ich mit dieser Variable in dem folgenden Code zu starten, tritt ein Fehler auf, wenn ich ohne Bedingungen zu verwenden, alles in Ordnung ist, zu verwenden, wenn die Bedingung schien zu verstehen, was zu tun ist.

Variable.DataGridView1.Rows.Add(row) 

Objektverweis nicht auf Instanz eines Objekts festgelegt

+0

Ihr eine lokal scoped Variable erstellen und nicht mehr den Wert Ihrer globalen Einstellung 'Variable' die' Nimm dim', dh: 'Variable = Neuer Form3() ' – asawyer

+1

Sie wäre besser dran mit einer Form2 und Form3 Variable bereits und einfach mit der gewünschten basierend auf der Bedingung. Eine 'If'-Anweisung erstellt einen neuen Blockbereich - alles, was darin deklariert wird, existiert nur dort. – Plutonix

+0

... der Grund dafür ist, die nächste Frage zu vermeiden * Wie kann ich feststellen, ob die Variable Form2 oder Form3 ist? * – Plutonix

Antwort

1

Sie benötigen eine Variable zunächst zu erklären, und es dann zu einer bestimmten Art zuzuordnen:

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

Aber in der Regel Sie würde dies in einem objektorientierten Ansatz tun, indem jede Form eine gemeinsame Schnittstelle implementiert.

Sie können dies dann tun:

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