Kommunikation zwischen Klassen



  • Hallo Ihr,

    ich habe es nun geschafft, das ich eine zweite Form einbinden kann ins Programm...jetzt ist noch die Frage...wie kann ich auf der einen Form den Text ausgeben, den ich in der anderen eingebe...
    Vielen Dank für Eure Hilfe...

    Form2

    #pragma once
    
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    
    namespace Uebung2
    {
    
    	/// <summary> 
    	/// Zusammenfassung für Form2
    	///
    	/// Achtung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie die Eigenschaft
    	///          'Ressourcendateiname' für das Compilertool für verwaltete Ressourcen ändern, 
    	///          das allen .resx-Dateien zugewiesen ist, von denen diese Klasse abhängt. 
    	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    	///          arbeiten, die diesem Formular zugewiesen sind.
    	/// </summary>
    	public __gc class Form2 : public System::Windows::Forms::Form
    	{
    	public: 
    		Form2(void)
    		{
    			InitializeComponent();
    		}
    
    	protected: 
    		void Dispose(Boolean disposing)
    		{
    			if (disposing && components)
    			{
    				components->Dispose();
    			}
    			__super::Dispose(disposing);
    		}
    	private: System::Windows::Forms::TextBox *  tbEingabe;
    	private: System::Windows::Forms::Button *  btGetTxtBack;
    	private: System::Windows::Forms::Button *  btClose;
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container* components;
    
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung. 
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->tbEingabe = new System::Windows::Forms::TextBox();
    			this->btGetTxtBack = new System::Windows::Forms::Button();
    			this->btClose = new System::Windows::Forms::Button();
    			this->SuspendLayout();
    			// 
    			// tbEingabe
    			// 
    			this->tbEingabe->Location = System::Drawing::Point(8, 24);
    			this->tbEingabe->Name = S"tbEingabe";
    			this->tbEingabe->Size = System::Drawing::Size(72, 20);
    			this->tbEingabe->TabIndex = 0;
    			this->tbEingabe->Text = S"";
    			// 
    			// btGetTxtBack
    			// 
    			this->btGetTxtBack->Location = System::Drawing::Point(32, 72);
    			this->btGetTxtBack->Name = S"btGetTxtBack";
    			this->btGetTxtBack->Size = System::Drawing::Size(104, 24);
    			this->btGetTxtBack->TabIndex = 1;
    			this->btGetTxtBack->Text = S"Text zurückholen";
    			this->btGetTxtBack->Click += new System::EventHandler(this, btGetTxtBack_Click);
    			// 
    			// btClose
    			// 
    			this->btClose->Location = System::Drawing::Point(48, 120);
    			this->btClose->Name = S"btClose";
    			this->btClose->Size = System::Drawing::Size(96, 32);
    			this->btClose->TabIndex = 2;
    			this->btClose->Text = S"Beenden";
    			this->btClose->Click += new System::EventHandler(this, btClose_Click);
    			// 
    			// Form2
    			// 
    			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
    			this->ClientSize = System::Drawing::Size(152, 158);
    			this->Controls->Add(this->btClose);
    			this->Controls->Add(this->btGetTxtBack);
    			this->Controls->Add(this->tbEingabe);
    			this->Name = S"Form2";
    			this->Text = S"Form2";
    			this->ResumeLayout(false);
    
    		}		
    	private: System::Void btClose_Click(System::Object *  sender, System::EventArgs *  e)
    			 {
    				 this->Close();
    			 }
    
    	private: System::Void btGetTxtBack_Click(System::Object *  sender, System::EventArgs *  e)
    			 {
    				//Was kommt hier rein?
    
    			 }
    
    	};
    }
    

    😕



  • Beitrag aus der FAQ:

    Variabeln übertragen (Zugriff von Form1 auf Form2)?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169328.html



  • Hallo nochmal...es wäre echt toll wenn es ein Beispiel zu meinem Programm gäbe...diese Links bringen mir gar nix, weil ich da nicht umsetzten kann...

    Danke nochmal



  • Was erwartest Du jetzt ?
    Ein Beispiel das Du einfach kopieren kannst ?

    private: System::Void btGetTxtBack_Click(System::Object *  sender, System::EventArgs *  e)
                 {
                    //Was kommt hier rein?
    
                 }
    

    Das jemand Hellsehen kann wie Form1 aussieht, in welche Variable Du das schieben willst oder wo Du bei dem Problem klemmst bzw. welches Wissen Du benötigst um weiter zu kommen ?

    Du kannst gerne Dein Problem konkret Formulieren oder was mit allgemeinen Hinweisen bauen.



  • Also in Form2 is ne Textbox...da soll man was eingeben können...das is ja easy, eigentlich...
    Dann habe ich einen Button erstellt und wenn man auf diesen Button drückt soll der eingegebene Text aus Form2 in einem Label auf Form1 erscheinen...

    Danke



  • Visual Newbie schrieb:

    Also in Form2 is ne Textbox...da soll man was eingeben können...das is ja easy, eigentlich...
    Dann habe ich einen Button erstellt und wenn man auf diesen Button drückt soll der eingegebene Text aus Form2 in einem Label auf Form1 erscheinen...

    Danke

    PS: AUch wenn ich das kopiere, für später brauch ichs bestimmt noch und muss es umändern und umbauen, also hab ich auch was gelernt...



  • Und dafür gibt es einfach zu viele Varianten.

    Ich weiß nicht ob es jetzt daran klemmt das Du nicht weißt wie man Variablen zwischen zwei Objekten füllt.

    Als erstes sorge mal dafür das entweder das Label oder die Textbox von außen zugreifbar wird. Das ganze kannst Du z.B. mit einer Methode machen. z.B.:

    System::Void Form1::SetLabelText(System::String ^ txt)
    {
       this->lbl_Ausgabelabel->Text = txt;
    }
    

    Du kannst dann aus Form2 über eine Instanz von Form1 das Label über die Methode setzen.

    Das Schlüsselwort property (oder __property in VS2003) hilft Dir dann dabei die Mehtode zu sparen und eine ellegante Variante von set und get Methoden für den Memberzugriff eines Objektes zu realisieren.

    Ka was ich dazu sagen soll. Für einfachen Copy & Past Code ist mir das Thema zu Grundlegend, ich finde es sinvoller wenn Du Dir das Wissen erarbeitest weil Du es ständig benötigst.

    Hier mal ein Beispiel: http://www.rothmichael.de/cpp/FrmBeispiel.zip (Wenn Du VC2003 hast wirst Du die kostenlose VS2005 Express Edition benötigen.)

    Ich wüsste jetzt aber nicht was Dir das Beispiel bringt wenn Du es einfach kopierst.


Anmelden zum Antworten