Announcement

Collapse
No announcement yet.

Uebergabe an Hauptfenster?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Uebergabe an Hauptfenster?

    Hallo,

    ich bin noch kein wirklicher Profi in der .Net Programmierung und deshalb auf ein kleines Problem gestossen. Mein Programm gibt dem Nutzer u.a. die Moeglichkeit mehrere Textzeilen einzugeben. Das Ganze habe ich mittels Windows Forms so gestaltet, dass von meinem Hauptfenster aus per Button ein neues Fenster aufgeht, in das der Nutzer den Text eingeben kann und dieser in einem Array abgelegt wird. Nun moechte ich gerne diese Array nach getaner Eingabe gerne dem Hauptfenster uebergeben, da dort der Inhalt zusammen mit anderen Daten in einer Datei abgelegt werden soll. Genau da hakt es nun aber. Ich habe in meiner Hauptfensterklasse eine oeffentliche Methode angelegt die das Array im Eingabefenster aufnehmen und in ein Array im Hauptfenster kopieren soll. Ich kann meine Hauptfenstermethode aber aus dem Eingabefenster nicht aufrufen; nichtmal wenn ich sie statisch mache.

    Wenn mir jemand einen Tip geben koennte wie ich den Ihnalt des Arrays aus dem neuen Fenster in mein Hauptfenster bekomme waere ich wirklich sehr dankbar.

    Viele Gruesse

  • #2
    da das hauptfenster das andere Fenster aufruft wäre es sinniger im zweiten Fenster eine Eigenschaft zu definieren bei der du das Array auslesen kannst (wenn es denn unbedingt eines sein soll). Der Aufruf aus dem Hauptfenster wäre dann in etwa so:

    Achtung rein schematisch da ich kein C++ kenne.
    [highlight=c++]
    Form2 MeinTest = new Form2();
    MeinTest-->show();
    //Deklarieren deiner Variable
    meineVariable = MeinTest-->MeinArray;
    [/highlight]
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

    Comment


    • #3
      Originally posted by das-d View Post
      da das hauptfenster das andere Fenster aufruft wäre es sinniger im zweiten Fenster eine Eigenschaft zu definieren bei der du das Array auslesen kannst (wenn es denn unbedingt eines sein soll). Der Aufruf aus dem Hauptfenster wäre dann in etwa so:

      Achtung rein schematisch da ich kein C++ kenne.
      [highlight=c++]
      Form2 MeinTest = new Form2();
      MeinTest-->show();
      //Deklarieren deiner Variable
      meineVariable = MeinTest-->MeinArray;
      [/highlight]

      Genau das hat er lt. seiner Bescheibung schon getan
      Christian

      Comment


      • #4
        nein laut seiner Beschreibung ruft er im Hauptfenster eine Methode auf in der er das ganze übergeben will. Wenn er aber das Fenster aus dem Hauptfenster instanziert dann muss er ja danach noch darauf zugreifen können.
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          habe in meiner Hauptfensterklasse eine oeffentliche Methode angelegt die das Array im Eingabefenster aufnehmen und in ein Array im Hauptfenster kopieren soll.
          Im Hauptfenster hat er eine Setter.

          Ich kann meine Hauptfenstermethode aber aus dem Eingabefenster nicht aufrufen; nichtmal wenn ich sie statisch mache.
          Im Eingabefenster hat er offenbar eine Instanz des Hauptfensters....

          Vielleicht sollte er Code posten....
          Christian

          Comment


          • #6
            Hallo,

            tut mir leid wenn ich mich etwas missverstaendlich ausgedrückt habe. Die Situation ist die, dass ich für ein anderes Programm eine Konfigurationsdatei erzeugen möchte, da dies über einen Parser eine ganze Menge Simulationsparameter einliest. Nun sind diese config dateien aber sehr nervig zu bearbeiten und ich hatte die Idee mit Visual Studio ein kleines Programm zu machen das einen die wesentlichen Parameter angenehmer verändern lässt und dann automatisch die Konfigdatei dazu erzeugt.

            Also habe ich mit einem Hauptfenster begonnen und alle Dateneingaben auch soweit im Griff.
            Allerdings sollen auch eine bestimmte Anzahl an Strings vom Benutzer eingegeben werden können.
            Da ich im Hauptfenster keinen Platz mehr habe, wollte ich einfach mit einem Button ein neues Fenster öffnen und dort die Benutzerstrings abfragen. Um an diese Strings jetzt wieder ran zu kommen fehlt mir aber wohl die nötige Programmiererfahrung, weshalb ich versucht habe mit einem Button in dem neuen Fenster, der die Stringeingabe beendet, das Stringarray an mein Hauptfenster zurück zu geben. Das klappt aber irgendwie nicht, weil dieses sich nicht wie ein Objekt verhält und ich nicht einfach aus meinem neuen Fenster heraus auf die Methoden des Hauptfensters zugreifen kann.

            Ihr seht, ich habe eher ein Problem damit zu verstehen was ich da eigentlich tue und wie man so einem Problem mit den richtigen Mitteln begegnet. Ich wäre also eher dankbar über einen Tip wie man so etwas richtig macht, wenn ihr seht, dass das völliger Blödsinn ist was ich da versuche.

            Grüße

            Comment


            • #7
              zeig mal den Code wie du aus dem Hauptform das andere Formular aufrufst?
              Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

              Comment


              • #8
                Geht leider nicht, der Code ist auf meinem Rechner in der Uni, aber gemacht habe ich es prinzipiell so:
                Code:
                	public ref class Form1 : public System::Windows::Forms::Form
                	{
                	public:
                		Form1(void)
                		{
                			InitializeComponent();
                			addText = gcnew userTextInput(); 
                		}
                
                	private: userTextInput^ addText; //WindowsForm userTextInput
                .
                .
                .
                Code:
                	private: System::Void button_addText_Click(System::Object^  sender, System::EventArgs^  e) 
                			 {
                				 addText->Show();
                			 }
                In userTextInput.h lasse ich dann den Text eingeben und speichere die Strings in einem Array und wollte wie gesagt bei Beendigung der Texteingabe und vor dem Aufruf von this->Close(); das Array in addText irgendwie Form1 bekannt machen.

                Comment


                • #9
                  Wenn das
                  private: System::Void button_addText
                  der Code aus dem Hauptfenster ist und

                  wenn die Methode damit private ist, dann kannst du nicht von woanders darauf zugreifen
                  Christian

                  Comment


                  • #10
                    ja die steht im Hauptfenster. Mir ist auch klar, dass ich nicht auf die Methode zugreifen kann wenn sie private ist. Ich habe auch eher was der Art versucht, dass ich aus dem Objekt addText heraus mit einer Methode aus Form1 das Array verfrachten wollte:

                    In addText.h
                    Code:
                    Form1->speichereArrayInForm1( arrayInAddText )
                    wobei:
                    Code:
                    speichereArrayInForm1( array<System::String> arrayInAddText )
                    natürlich als public in Form1.h steht. Habs auch mit static probiert, aber dieses Form1 ist ja kein richtiges Objekt, oder? Zumindest wird es ja nicht so richtig instanziert, sondern in main() direkt durch
                    Code:
                    Application::Run(gcnew Form1());
                    aufgerufen.


                    Aber wenn man mal davon absieht was ich versucht habe, wie würde man denn am besten Daten von anderen Fenstern in Form1 bekannt machen? Also ganz allgemein habe ich in Form1:
                    Code:
                    private: VariableX;
                    public: methodeX(Var) { VariableX = Var; }
                    dann öffne ich ein neues Fenster. In diesem weise ich einer dortigen Variablen einen Wert zu und würde den dann gerne auch in der VariableX in Form1 ablegen.

                    Comment


                    • #11
                      In dem das "neue Fenster" die Instanz des Hauptfensters bekommt (bsp. im Konstruktor, oder das Hauptfenster ruft eine Methode des "neuen Fensters" auf und übergibt sich selbst, o.a.) und diese dann nutzt um methodeX aufzurufen
                      Christian

                      Comment

                      Working...
                      X