Zuweisung funktioniert nicht



  • Oh, oh, da fehlen aber ein paar Grundlagen -)

    Schau dir mal die Linksammlung "Kommunikation von 2 Forms" unter http://www.mycsharp.de/wbb2/thread.php?goto=lastpost&threadid=5960 an.

    Stichworte: Eigenschaften (Properties) und Ereignisse (Events)



  • Jaa da fehlen einige Grundlagen 😉
    Ich hab bisher nur mit C++ gearbeitet...da war mir das mit den Properties alles klar, aber hier muss ich mich wohl nochmal einlesen - danke für den Link 🙂



  • Hmm - ich verstehe nicht so ganz, wie ich das mit den properties machen könnte?!

    in C++ hätte ich es so gemacht:

    Form2:

    public:
        property Region^ Daten
        {
           Region^ get()
           {
              Region^ temp = gcnew Region;
              temp->Name = this->TextBox1->Text;
              temp->Land = this->TextBox2->Text;
              return temp;
           }
        }
    

    aber in C# gibt es ja dieses schöne Schlüsselwort "property" nicht mehr 😞



  • Google doch einfach nach c# property. Das geht soch viel schneller als hier auf eine Antwort zu warten.



  • namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Region Daten; // Property
    
            public Form2()
            {
                InitializeComponent();
                Daten = new Region();
                Daten.SetName(F2textBox1.Text);
                Daten.SetLand(F2textBox2.Text);
            }
        }
    }
    


  • Danke Dummy 🙂
    Genau das hab ich gesucht ^^

    Das komische ist nur, dass er einen normalen string akzepiert und den dann auch in meiner Form1 im ListView anzeigt, aber wenn ich den Text der Textbox möchte, wird dieser nicht im ListView von Form1 angezeigt?

    namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Region Daten;
    
            public Form2()
            {
                InitializeComponent();
    
                Daten = new Region();
                Daten.RName = this.F2textBox1.Text;
                Daten.LName = "test";
            }
        }
    }
    

    ...also das "test" wird in mein Form1-ListView übertragen - wunderbar...aber der Text von F2TextBox1 nicht?



  • neuerDummy123 schrieb:

    namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Region Daten; // Property
        }
    }
    

    Sieht für mich eigendlich wie eine normale Variable aus... Für ne Property müßte da mindestens stehen:

    namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Region Daten { get; set; } // (Auto generated) Property
        }
    }
    

  • Administrator

    @waldmensch7,
    1. Bitte verwende die Bezeichnung C++/CLI, wenn du C++ in Verbindung mit .Net meinst. Das ist nämlich eine eigenständige Sprache und unabhängig von C++.
    2. Dein Code hätte so nicht mal in C++/CLI funktioniert. Da fehlen mehr als nur Grundlagen. Das sieht beinahe so aus, als hättest du noch nie programmiert. Kauf dir ein Anfängerbuch oder lies zumindest ein paar Tutorials durch. Bereits der C# Programming Guide würde sicherlich viel helfen.

    Grüssli



  • @ dravere: ich muss dir widersprechen, in C++/CLI funktioniert das aber! hab es ausgetestet
    ...und ja ich bin jetzt nicht der überprogrammier-crack 😉 hab sonst nur c++ konsolenmäßig bisschen was gemacht.

    ...und was jetzt an meinem code falsch ist, weiß ich immer noch nicht - anstatt dass mich jeder auf die fehlenden grundlagen aufmerksam macht, hätte man doch was schreiben können, was zur lösung beiträgt? verstehe ich nicht... 😕
    oder ist das nur ein forum für cracks?


  • Administrator

    waldmensch7 schrieb:

    @ dravere: ich muss dir widersprechen, in C++/CLI funktioniert das aber! hab es ausgetestet

    Ich programmiere auch C++/CLI und das was du uns hier präsentiert hast, funktioniert so ganz sicher in C++/CLI auch nicht. Dann machst du nämlich in C++/CLI was anders. Wahrscheinlich machst du in C++/CLI, was du weiter vorne gezeigt hast. Aber das ist definitiv was anderes.
    Deine Zuweisung an Daten.RName findet im Konstruktor statt. Wenn sich später dann einmal F2textBox1.Text ändert, springt dieser Wert nicht automatisch auf Daten.RName über. Dort bleibt natürlich der alte Wert enthalten, welcher du im Konstruktor zugewiesen hast. Und genau gleich läuft dies auch in C++/CLI ab.

    Wenn du den Code aus C++/CLI willst:

    namespace WindowsFormsApplication1
    {
      public partial class Form2 : Form
      {
        public Region Daten
        {
          get
          {
            Region daten = new Region();
            daten.RName = F2textBox1.Text;
            daten.LName = F2textBox2.Text;
            return daten;
          }
        }
    
        public Form2()
        {
          InitializeComponent();
        }
      }
    }
    

    waldmensch7 schrieb:

    ...und was jetzt an meinem code falsch ist, weiß ich immer noch nicht - anstatt dass mich jeder auf die fehlenden grundlagen aufmerksam macht, hätte man doch was schreiben können, was zur lösung beiträgt? verstehe ich nicht... 😕
    oder ist das nur ein forum für cracks?

    Dieses Forum ist nicht dazu gedacht, den Leuten das Lesen abzunehmen. Das ist ein Forum mit freiwilligen, da ist es doch nur höfflich, wenn man sich selber zumindest mal mit den Grundlagen auseinandersetzt, bevor man hier angerennt kommt.

    Grüssli


Anmelden zum Antworten