wie übergebe ich Werte beim Aufruf einer zweiten Form?
-
Hallo,
zurzeit bin ich dabei mich etwas intensiver in VC++ einzuarbeiten.
Hierbei bin ich auf folgendes Probelm gestossen:
Ich möchte beim Aufruf des zweiten Forms diesem zwei Integer Werte übergeben. Wie löse ich das am einfachsten.
Für Eure Hilfe vielen Dank im Voraus und Gruß
-
Hi,
musst du dich einarbeiten oder machst dus aus "freiem Willen"?
Wenn nicht nötig solltest du entweder C# oder C++ ohne CLI machen.Werte übergibst du indem du den Konstruktor überlädst. Wie auch
beim Erstellen anderer Objekte.Grüße
Huddi
-
Hi,
danke für den schnelletn Tipp.
Da bei uns Visual Studio C++ eingesetzt wird, ist die Einarbeitung nicht ganz freiwillig.
Kannst Du etwas genauer spezifizieren, wie ich den Konstruktor überlade?
Mein erster Ansatz war eine Methode die mir die Werte zurück gibt. Hab es aber nicht geschafft diese Methode aus Form2 aufzurufen. Wobei ich kein Problem hatte Werte aus Form1 über eine Methode von Form2 zu "holen".
Danke im Voraus und Gruß
-
Da bei uns Visual Studio C++ eingesetzt wird, ist die Einarbeitung nicht ganz freiwillig.
Visual C++ ist die Entwicklungsumgebung.
C++/CLI ist eine .NET Sprache.
C++ ist eine native Sprache.
Beides kann mit Visual Studio programmiert werden, jedoch eignet sich C++/CLI nur für spezielle Fälle bei denen Interoperabilität zu erreichen ist.Edit:
Habe ich noch vergessen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html
-
private: int _number1, _number2; public: Form2(int _zahl1, int _zahl2) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // _number1 = _zahl1; _number2 = _zahl2; }
Aufruf aus Form1:
Form2^ _newForm = gcnew Form2(12,22); _newForm->Show();
-
Danke @ Mel.
Das habe ich schon verstanden.
Nur wie kann ich beim laden der 2. Form auf eine Methode der 1. Form zugreifen?
Wenn ich es auf die gleiche Weise probiere, erhalte ich die Fehlermeldung Form1 nicht bekannt!Danke und Gruß
-
shovel schrieb:
Danke @ Mel.
Nur wie kann ich beim laden der 2. Form auf eine Methode der 1. Form zugreifen?Da bist du wohl gleich auf ein Problem von CLI gestoßen.
Siehe auch: http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html
->der erste Punkt.Also ich habe soetwas bis jetzt mit Delegates gelöst. Man kann auch die zweite
Form nur in der .cpp datei der ersten includen und dann die ganze Form dem Konstruktor
der zweiten übergeben.
Ob das schön programmiert ist weiß ich allerdings auch nicht ;).
-
Hi,
ich habe Werte immer folgendermaßen übergeben.
Erstmal den Konstruktor der 2. Form überladen wie oben bereits beschrieben.Settings(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } Settings(array<String^>^ s_astrSettings,array<bool>^ s_aboSettings) { InitializeComponent(); astrSettings = s_astrSettings; aboSettings = s_aboSettings; }
Anschließend dann die 2. Form mit
Settings^ neu = gcnew Settings(astrSettings,aboSettings); neu->Show();
aufrufen.
Übergeben habe ich dabei immer Arrays. Wenn du dann in deiner 2. Form etwas in den Arrays änderst, sind die Änderungen auch in der 1. Form verfügbar.
Wichtig ist dann nur noch, die Indizes der Arrays in beiden Formen auf die gleichen Werte zusetzen.