1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Properties - Wert übergeben?

  • Borion
  • 30. Januar 2012 um 18:20
  • Unerledigt
  • Borion
    4
    Borion
    Mitglied
    Reaktionen
    2
    Punkte
    157
    Beiträge
    22
    • 30. Januar 2012 um 18:20
    • #1

    Hallo,

    bin gerade dabei meine C# Kenntnisse ein wenig auf zu frischen und stoße schon recht früh an meine Grenzen :(. Wie kann ich von form1 einen Wert an form2 mittels property/getter übergeben?

    Hier mein Code, der leider nicht funktioniert und ich kanns mir ehrlich gesagt nicht erklären:

    Form1:

    Code
    private bool isActive = false;
    
    
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                isActive = true;
                f2.Show();
            }
    
    
            public bool GetIsActive
            {
                get { return this.isActive; }
            }
    Alles anzeigen

    Form2

    Code
    public Form2()
            {
                InitializeComponent();
            }
    
    
            private void Form2_Load(object sender, EventArgs e)
            {
                Form1 f1 = new Form1();
                label2.Text = f1.GetIsActive.ToString();
            }
    Alles anzeigen

    mMn sollte in label2.Text true stehen, es steht allerdings false drinnen. Würd mich freuen, wenn mir jemand erklären kann warum. THX

    Einmal editiert, zuletzt von Borion (30. Januar 2012 um 18:32)

  • fabs
    10
    fabs
    Mitglied
    Reaktionen
    41
    Punkte
    1.046
    Beiträge
    197
    • 30. Januar 2012 um 19:29
    • #2

    Der Grund ist, dass du in Form2.Form2_Load ein neues Form1-Objekt erzeugst. Dort wurde der Button dann noch nicht geklickt. Wenn du in Form2 auf genau das Form1-Objekt zugreifen möchtest, welches das Form2-Objekt erstellt hat, dann müsstest du das irgendwie übergeben, zum Beispiel im Konstruktor:

    Code
    private bool isActive = false;
    
    
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2(this);
                isActive = true;
                f2.Show();
            }
    
    
            public bool GetIsActive
            {
                get { return this.isActive; }
            }
    Alles anzeigen

    Form2

    Code
    private Form1 parent;
    public Form2(Form1 parent)
            {
                InitializeComponent();
                this.parent = parent;
            }
    
    
            private void Form2_Load(object sender, EventArgs e)
            {
                label2.Text = parent.GetIsActive.ToString();
            }
    Alles anzeigen

    Das ist natürlich nur eine unter vielen Möglichkeiten, es hängt im wesentlichen davon ab, was du tun möchtest. Du könntest Form2 auch eine entsprechende Property geben, die Form1 direkt nach dem erzeugen setzt, oder Form1 zu einem Singleton machen bzw. anderweitig statisch zugriff auf eine Form1-Instanz erlauben.

    Eine kleine Nebenbemerkung: Ein besseres Benennungsschema für Properties ist es, Dinge wie Get/Set wegzulassen - das ergibt sich nämlich ohnehin aus der Definition der Property und entspricht der Art des Zugriffs eher als ein Methodenname.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung