Laden...

Form wechseln u. Daten übergeben

Erstellt von GNewmann vor 17 Jahren Letzter Beitrag vor 17 Jahren 35.824 Views
G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren
Form wechseln u. Daten übergeben

Hallo Liebe Leutz,

ich habe eine Frage, die auch schon öfters beantwortet wurde, jedoch würde ich gerne auch den Sinn dahinter verstehen.

Zum Verständnis.. in Form1 (Kundendaten z.B. Kundennummereingabe), kann der Benutzer auf ein Button klicken wo Form 2 aufgerufen wird wo er dann nach einem Kunden suchen kann in einer ListBox und diesen dann auswählen kann.

Dass klappt alles wunderbar, jedoch schließe ich nun die Form und sollte den Kunden den der Benutzer ausgewählt habe in die TextBox in Form1 eintragen.

Forms kann man, wie bekannt mit .Show aufrufen.

Nun will ich die Form aber komplett entladen und bei neuaufruf wieder laden.

Ich habe also nun die Form "Auftragsnummer" erstellt und ein Objekt davon "f2" erstellt.
bei f2.close() schließt er mir das Ganze Programm.. was ich nicht verstehen kann.

Nun habe ich die Form einfach auf visible gesetzt, momentan.

Kommen wir nun zum eigentlichen Problem.. dem übergeben des Wertes in der Form Auftragsnummer (f2) wieso muss ich da eigentlich ein Objekt von erstellen in Form1, damit ich endlich Zugriff habe.. ? ich kann doch auch einfach Form1.Show() schreiben und alles funktioniert.. bei dieser neu erstellten Form brauch ich aber ein Objekt von in Form1!?!?

Dass Problem, ist nun zu sagen: Wenn Form 2 schließt und der Benutzer einen Kunden ausgewählt hat, dann soll der Wert von Form 2 in Form 1 übertragen werden.

Viel Fragen für den Anfang, aber hier stehe ich momentan an so einem leichten Problem! und das Prog ist komplex.. 😭 naja, an so kleinigkeiten lässt man sich aufhalten..

Gruß,
GNewmann

R
297 Beiträge seit 2005
vor 17 Jahren

Hallo,

hier kannst du mal schauen.

Von Form2 auf Form1 zugreifen.

Urlaubsorte suchen: http://www.tripedio.de

3.728 Beiträge seit 2005
vor 17 Jahren
Forms Mysterien

Wenn durch das schließen eines Forumlars plötzlich die ganze Anwendung beendet wird, hast Du wohl das Startformular geschlossen. In der Main-Methode (programmeinstiegspunkt) wird ein bestimmtes Formular erzeugt und in eine Anwendungsschleife gestellt. Wenn dieses Formular geschlossen wird, springt er aus der Anwendungsschleife und das Programm ist beendet (Da die Main-Methode vollständig durchlaufen worden ist).

Zu Deiner Frage, warum man immer ein Objekt von Formx braucht: C# ist eine objektorientierte Sprache. Klassen sind nur die "Baupläne" der Objekte. Damit etwas wirklich "leben" kann, musst Du ein Objekt erzeugen. Das sollte aber alles in Deinem C# Buch stehen, welches Du hoffentlich gelesen hast.

Wie verschiedene Formulare Daten austauschen, steht hier:

Kommunikation von 2 Forms

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Vielen Dank für die Antworten..
ich muss aber dazu noch sagen, dass ich auf die Property meiner TextBox zugreifen will.

D.h. wenn ich die aktuelle Form schließe, soll in Form1.textBox1.Text = blabla
der Inhalt der Textbox geändert werden, da komm ich auch mit get und set nicht hin.. zumindest hab ich es bis jetzt in keinen der Beiträge gesehen.

Ich kann nicht den Wert public setzen oder mit get und set abfangen, zumindest hab ich das noch nicht gesehen.. dazu bräuchte ich ein Event wo erkennt, "ok, Form2 ist geschlossen nun darf ich (form1) den Wert in die Textbox eintragen"..
Aber ich will ja das Form2 der Form1 den Text so gesehen "reinknallt" also zwangsweise übergibt..

Ja, dass mit Objekten u.s.w scheint OOP zu sein 😮) bin gerade dabei mich anzufreunden... ich bin halt skeptisch weil ich für Form 1 nirgends ein Objekt erstellt habe!? und für Form2 muss ich in Form1 ein Objekt erstellen!? wieso nicht noch anderstrum!?!? dass sind so die fragen bezügl. OOP.. zumindest bei der Form.. innerhalb einer Form komm ich damit gut klar 😮)

Gruß,
GNewmann

3.728 Beiträge seit 2005
vor 17 Jahren
Objekte

Du hast wohl ein Objekt von Form1 erstellt. In der main-Methode (Bei VS2005 in der Program.cs).

Was Du da machen willst, hört sich haarstreubend an. Man greift nicht direkt auf Steuerelemente anderer Formulare zu. Wenn Du solche Sachen machst, hast Du bald einen riesen Krauthaufen. Form2 darf nicht direkt auf Form1 zugreifen. Angenommen Du willst Form2 an einer anderen Stelle mit Form3 verwenden, dann geht das nicht, da es direkt auf Form1 zugreifen will. Mach sowas blos nicht.

Vorschlag: Implementier Dein Suchfenster (Das mit der Kundennummer etc.) als Dialog und ruf es über eine statische Funktion auf. Dann kannst Du Parameter übergeben und kriegst auch welche zurück. Auf diese Art hast Du die Kundensuche ein einziges Mal implementiert und kannst sie von allen Formularen aufrufen, die Kunden suchen möchten.

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Danke für die schnelle Antwort!

Hast du mir dazu Links, Tipps? Ich werde mich jetzt mal im Internet schlau machen, da ich mit Dialogen selten arbeite.

Danke.

Gruß,
GNewmann

191 Beiträge seit 2006
vor 17 Jahren

Du musst halt die Daten abkapseln:

public string Fenstertext
{
	get { return this.Text; }
	set { this.Text = value; }
}

Link:
http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_04_003.htm#Xxxobkap04003040017a91f0461b2

EDIT:
Ich könnt dir ein Beispiel für die InputBox schreiben, wenn du es dann noch nicht vestanden hast.

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Die Dialoge sind doch bausteinartig zusammengesetzt, wobei ich die Form designt habe.. was für einen Tipp habt ihr mir so einen Dialog genauso aufgebaut wie die Form zu erstellen.. kann ich einen Dialog nicht in der Form bearbeiten? kreiren?

Wenn nicht, wie setzte ich ihn am besten zusammen ich habe eine ListBox mit vielen Events eine ComboBox und einen Button.. kann ich die Erstellung aus dem Code von meiner Form rauskopieren?

Wie ihr merkt, bin ich nicht so fit, wenn es um Formen und Dialoge geht 😠

Gruß,
GNewmann

Edit: Danke, ein Beispiel wäre sehr hilfreich..

3.728 Beiträge seit 2005
vor 17 Jahren
Beispiel

Ich hab kurz ein Beispiel geschrieben:

3.728 Beiträge seit 2005
vor 17 Jahren
Screenshot

So sieht es aus.

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Ihr seid ja prima! Vielen Vielen Dank!

Bin schon ganz gespannt auf den Quellcode.. der Screenshot sieht nämlich schon einmal Top aus!

Merci

Gruß,
GNewmann

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Muss leider nochmal schreiben.

ich kriege folgende Fehlermeldung, wenn ich die Projekt- File öffne.

Gruß,
GNewmann

3.728 Beiträge seit 2005
vor 17 Jahren
Visual Studio

Welches Visual Studio verwendest Du?

Das projekt wurde mit Visual Studio 2005 Express erstellt.

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Ich verwende das 2003er.. daran dürfte es scheitern.

Gruß,
GNewmann

191 Beiträge seit 2006
vor 17 Jahren

Hm ... ich wollt grad schon die Idee aufgeben ein Tut für standartmäßige Inputbox zu machen.
Glaubt ihr das lohnt sich? Das kann ja eigentlich fast jeder ...

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Ich wäre vollkommen dafür.. 🙂

Es gibt zwar schon viele Tuts, doch so ein Fall wie ich es momentan habe, mit einem Dialog und der Übergabe von dem Wert, würde ich als sehr interessant einstufen.

Ich würde mich auf jedenfall freuen.

Kennt jemand eine Lösung wie ich das Programm von Rainbird zum laufen bringe?

Gruß,
GNewmann

191 Beiträge seit 2006
vor 17 Jahren

Gut. ok. Hier ist es: Link

Ich hoffe du kannst damit was anfangen 😁

G
GNewmann Themenstarter:in
90 Beiträge seit 2006
vor 17 Jahren

Dass ging ja schnell 🙂 lese es gleich mal durch! Vielen Dank!

Gruß,
GNewmann