[VB.NET] Zwei Formen - > Wert übergeben

corey

Ensign
Dabei seit
März 2005
Beiträge
254
Hi all,

Könnt Ihr mir sagen, wie ich bei zwei Formen, von der einen Form, der anderen Form einen Wert übergeben kann?

plz so schnell wie möglich!

thx
 

DigitalD

Banned
Dabei seit
März 2005
Beiträge
512
form2.label.value = form1.inputbox.value (beispiel)
wär ganz gut wenn du etwas konkreter werden könntest...
 
Zuletzt bearbeitet:

corey

Ensign
Ersteller dieses Themas
Dabei seit
März 2005
Beiträge
254
ja genau so meine ich..

ich probiere es jetzt dann aus, aber ist das nicht vb6 was du gerade geschrieben hast?

thx
 

corey

Ensign
Ersteller dieses Themas
Dabei seit
März 2005
Beiträge
254
Wie lautet dieses in vb.net ich krieg das nicht in vb.net hin!?!
 

Arnd

Lieutenant
Dabei seit
Jan. 2005
Beiträge
926
Hallo,

also wenn ich das aus der Erinnerung mit vb6 noch richtig weiss, hat das aber Nebenwirkungen. Sprich wenn form1 noch nicht sichtbar ist und dann darauf zugegriffen wird, erscheint plötzlich das Fenster von form1.
Also gehört da schon noch ein bisschen mehr Applikationslogik und ein globaler Datencontainer dazu.

Das wird in vb.net wohl auch nicht anders sein? Rein von der Logik her kann man auf Inhalte eines Fensters das noch nicht da ist auch nicht zugreifen.

Das ist jetzt sicher nicht der Weisheit letzter Schluss :-).

Man nehme zwei globale Variablen gValForm1 und gValForm2 und jedes Fenster schreibt dann bei Änderung seinen Wert hinein. Der jeweilige Partner kann dann nach Wunsch einfach den gewünschten Wert auslesen.

Oder alternativ die beiden Fenster verschicken sich Nachrichten und in der Antwort steht der gewünschte Wert drin.

MfG

Arnd
 

corey

Ensign
Ersteller dieses Themas
Dabei seit
März 2005
Beiträge
254
Hi Arnd,

Danke für deine Antworten. Das stimmt, dass wenn eine Form nicht mehr sichtbar ist, dass der Wert dann verschwindet. Die Idee mit den Variablen habe ich auch schon probiert zu realisieren, funktioniert aber leider in vb.net nicht:( Wie geht das mit den Nachrichten, welche du beschrieben hast?

Danke für deine Antwort schon im Voraus.
 

Arnd

Lieutenant
Dabei seit
Jan. 2005
Beiträge
926
Dazu braucht du das Windows Handle der Forms. In VB6 muss man noch die Windows Funktion importieren/deklarieren.

Du deklarierst eine private Nachricht, z.b. WM_USER + 1 und dann mit SendMessage diese Nachricht an das andere Fenster schicken.
Das jeweilige Fenster muss dazu natürlich diese Nachricht empfangen bzw. abarbeiten. das passiert z.B. in onMessage. Der return Wert der nach Abarbeitung der Nachricht zurückgegeben wird kann dann vom Sender ausgewertet werden.

Das war jetzt sicher ziemlich allgemein. Das liegt aber daran das ich das Verfahren bei Visual C++ anwende. Es lässt sich aber analog in VB6 und damit sicher auch in VB.net anwenden.

Solltest Du das nicht hinbekommen. Die Variante mit den globalen Variablen muss aber auch gehen.

Noch ein Vorschlag. Lade beide Fenster bei Systemstart schon in den Speicher, aber halte sie unsichtbar. Ebenso beim schliessen nicht die Fenster löschen sondern nur unsichtbar schalten. Dann kannst Du jederzeit auf alle Inhalte zugreifen. Das gibt nur Probleme bei MDI Anwendungen.

MfG

Arnd
 

corey

Ensign
Ersteller dieses Themas
Dabei seit
März 2005
Beiträge
254
HI Arnd & alle anderen welche dies interessiert:

und zwar die Lösung liegt darin dass man die Variable, welche man freigeben will 'public shared' machen muss. damit die variablen von den anderen formen auf diese Variable zu greifen kann. anschliessend muss ich den variblen wert mit get holen

bei mir musste ich einen string von der Form1 auf einem label in der form2 haben:

form1:

public shared transfer as string

shared = txtname.text


form2:

public property name_test() as string

get

return form1.shared

end get

set(byval value as string)
txttest.text = form1.shared
end set

bei mir gings so.

bei weiteren fragen nur fragen :o
 

corey

Ensign
Ersteller dieses Themas
Dabei seit
März 2005
Beiträge
254
sorry, noch ne korrektur

ich meine nicht in ein label, sondern in eine textbox
 
Top