Daten zwischen 2 Formen tauschen

FlashMX

Mitglied
Hallo,

ich habe 2 Formen sagen wir FRM1 und FRM2 und ich möchte wie unter vb6 einfach

in FRM1 sagen z.B. FRM2.visibile = false aber es gibt einen fehler weil es FRM2 nicht geben soll. FRM2 wurde aber aus FRM1 gestartet.

Kann man irgend wie das lösen das es wie damals unter vb6 ist?
 
Zuletzt bearbeitet:
Ich nehme an, dass FRM1 und FRM2 verschiedene Klassen sind. Um FRM2 anzuzeigen musst du ja eine Instanz erstellen. Diese Instanz musst dann halt einfach "für später aufheben" sprich in der Klasse FRM1 speichern. Dann kannst du FRM2 über die gespeicherte Variable steuern.
 
Aha, sorry.
Dann musst du FRM2 eine Referenz auf FRM1 "mit auf den Weg geben".
Also fügst du FRM2 eine öffentliche Variable vom Typ FRM1 ein, der du dann deine Instanz von FRM1 zuweist.
Code:
'FRM1:
Public Sub ShowFRM2()
  Dim F2 as New FRM2()
  F2.FRM1Var = Me
  F2.Show()
End Sub
Über diese Referenz kannst du jetzt FRM1 kontrollieren.

Die Referenz könntest du natürlich auch per Konstruktor übergeben.
 
Hallo ich muss das thema noch mal aufwärem weil ich nicht mehr zurecht komme.

Selbes Problem:

Code:
Class Form1

Sub ShowForm2()
Dim FRM2 as new Form2
FRM2.MainForm = Me
FRM2.show
End Sub

End Class

Code:
Class Form2
public MainForm as Form1

Sub Button1Click()
MainForm1.Visible = False
End Sub

End Class

So Wenn ich jetzt in Form2 den Button anklicke dann kommt folgende Meldung:

Eine nicht behandelte Ausnahme des Typs 'System.NullReferenceException' ist in NoteIt.exe aufgetreten. Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Was mache ich Flasch?
 
Hallo FlashMX,

es gibt da mehrere Möglichkeiten. Hier nur mal eine Lösung,die vielleicht nicht
die beste aber eine einfache ist.

Du nimmst dir ein Modul und deklarierst darin deine Form2 als Public.

Code:
Module mein_Module

    Public myfrm2 As Form2

End Module

' im Load oder Activate Ereignis schreibst du dann folgendes


If myfrm2 Is Nothing Then
  myfrm2 = New Form2
End If

Jetzt kannst du myfrm2 von überall aus ansprechen.

Gruß
Jens
 
Wieso nicht in die Tutorials gucken? Da gibts eines für C#. Hilft dir von der Sprache nicht unbedingt weiter, aber alleine durchs Durchlesen erfährst du eine Möglichkeit wie du das machen kannst.
 

Neue Beiträge

Zurück