[C#] Frage zu übergabe von Klassen an Forms

Bansi

Mitglied
Hallo Werte Communty,

ich bin was C# angeht ein kompletter Neuling und habe nun meine ersten
Probleme was Klassen angeht, schon in PHP hab ich mich nicht wirklich rangetraut.

Zu meinen Problem, ich habe ein Form (Form1) erstellt mit einer Textbox (textBox),
sowie eine zweite Klasse (textBoxFuellen). Nun möchte ich mit der Klasse textBoxFuellen
auf mein Formcontroll zugreifen, d.h ich möchte irgendeinen Text in die textBox
schreiben. Leider bekomm ich das überhaupt nicht in den Griff und bräuchte da etwas
Unterstützung bzw. Tips von euch.

Ich habe etwas gegoogelt aber leider nicht viel Sinnvolles gefunden, nur was die Kommunikation zwischen 2 Forms angeht, wird man mit reichhaltigen Infos beschossen.

Ich poste mal den Code:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public string textBox_inhalt;
        public Form1()
        {
            InitializeComponent();
        }
    }
    public class textBoxFuellen
    {

        public textBoxFuellen()
        {
            Form1 f1 = new Form1();
            f1.textBox_inhalt = "test";

        }

    }
}

So wie ich es mitbekommen habe, muss ich eine globale Variable festlegen, was ich mit
Code:
public string textBox_inhalt;
getan habe. Nur wie übergebe ich ich dann die Variable an meine textBox ?

Ich weiss das es keine gute Idee ist mit externen Klassen auf ein Form zuzugreifen, da
es dadurch keine Wiederverwertbarkeit hat. Leider lässt es sich aber nicht anders lösen,
da ich eigentlich für mein richtiges Projekt schon eine Klasse (nicht meine) habe die aber über Konsole läuft und ich das einfach nur im Form angezeigt haben möchte.

Ich freue mich über jeden Ratschlag und hoffe es hilft mir was :rolleyes:

Mfg

Sebastian
 
Hallo Sebastian,

das Ziel der ganzen Sache ist mir noch nicht klar geworden. Du schreibst, du hast in deinem Projekt schon eine Klasse. Was macht diese Klasse? Irgendwas ausgeben?

Grundsätzlich: Wenn du von einer anderen Klasse aus auf Elemente deiner Form zugreifen willst, brauchst du einen Verweis auf diese Form. In deinem Code legst du mit "Form1 f1 = new Form1();" eine neue Form an, daher kann das so nicht funktionieren. Die zweite Sache ist die, dass du ja die Klasse die was schreiben soll, irgendwo instanziieren musst. Das kannst du z.B. im Konstruktur deiner Form machen.

Ich habe mal skizziert, wie es funktionieren könnte, habe aber natürlich keine Ahnung, ob das für dein richtiges Projekt praktikabel ist.
C#:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public string textBox_inhalt { get; set; } // Nach außen zugängliche Variablen sollen als Properties deklariert werden
        
        public Form1()
        {
            InitializeComponent();
            
            texBoxFuellen oFuellen = new textBoxFuellen(this);
        }
    }

    public class textBoxFuellen
    {

        public textBoxFuellen(Form1 oForm)
        {
            oForm.textBox_inhalt = "test";
        }
    }
}
Gruß
MCoder
 
Zurück