[C#] Werte übergeben

Hallo,

eine kleine Frage in die Runde.... :)

Ich habe ein Form und einen Wert der in einer Textbox steht. Rufe ich nun ein Neues Form auf, möchte ich diesen Wert weiter benutzen. Wie kann ich das umsetzen? :confused:

mfg Marc
 
Hallo,

C#:
form2 frm = new form2();
frm.txtForm2Text = this.txtForm1Text.Text;

So müsste es gehen.
Elegater wäre es natürlich mit Properties. ;)


lg,
kasal
 
Hi,
du solltest darauf achten, das du bei form2 den Zugriffsmodifikator(Modifiers) für die Textbox(txtForm2Text) , entweder als public oder internal definiert hast.
ansonsten kannst du nicht darauf zugreifen.

Dann kannst du, auch ausserhalb von form2, mit
frm.txtForm2Text.Text = "foobar"; den Value Text von txtForm2Text ändern.

Das kannst du über die Properties(Eigenschaftenfester) der Textbox festlegen.
Dort einfach Modifiers umstellen.

Wie kasal schon erwähnt hat, wäre das über richtige Properties natürlich besser gekapselt.

Gruß iki.
 
Du kannst etwaige Werte beispielsweise auch über den Konstruktor weitergeben. Sind es mehrere Werte, oder könnten im Laufe der Zeit mehrere Werte übergeben werden, bietet es sich auch an, eine Austauschklasse zu erstellen, die übergeben wird.

C#:
public class DataExchange
{
  private string _someText = null;

  public string SomeText
  {
    get { return this._someText; }
    set { this._someText = value; }
  }
}
Das wäre die Austauschklasse, nun muss eine Änderung im zweiten Formular gemacht werden, damit im Konstruktor ein Objekt des Typs DataExchange angenommen werden kann. Bei einem Formular names Form2 mit nur einer Textbox names SomeTextTextBox würde dies dann so aussehen:
C#:
public partial class Form2 : Form
{
    public Form2(DataExchange data)
    {
        InitializeComponent();

        if (data != null && data.SomeText != null)
            this.SomeTextTextBox.Text = data.SomeText;
    }
}
Der Aufruf aus dem ursprünglichen Formular kann dann wie folgt erledigt werden:
C#:
DataExchange de = new DataExchange();
de.SomeText = "test";

Form2 form2 = new Form2(de);
form2.Show();
Denke das sollte helfen.
 
Hallo,

ich habe das gleiche Problem, jedoch hab ich das genauso gemacht, wie NorbertEder das geschildert hat. Funktioniert auch bzw. es kommen keine Fehlermeldungen. Jedoch kann nicht auf SomeText zugreifen über
Code:
de.SomeText = "test";

kann mir einer helfen?
 
ich bekomme diesen Fehler:

Für das nicht statische Feld, die Methode oder die Eigenschaft "BSW4MES.dataExchange._someText" ist ein Objektverweis erforderlich

jedoch habe ich ja diesen Objektverweis....

Hab da so am anfang meiner klasse gemacht...
Code:
DataExchange de = new DataExchange();


dann weiter unten, wenn ich auf de zugreifen will, lässt er mich nicht... also es funktioniert dann gar net...
 
Hallo,

zeige doch mal etwas mehr Code von der Klasse, die DataExchange verwendet und evt. auch noch deine Implementierung der DataExchange-Klasse.

Gruß
MCoder
 
Hallo...

also ihr implementier ich die Klasse data exchange in meiner oberfläche:

Code:
public oberflaeche(dataExchange data)
        {
            if (data != null && data.someText != null)
                this.textBox8.Text += data.someText;
        }

ich will nämlcih auf textbox8 zugreifen aus einer anderen klasse!

und ihr implementiere ich dataExchange in meiner anderen klasse:

Code:
dataExchange data = new dataExchange();

und so möchte ich es aufrufen:
Code:
dataExchange._someText += dllImport.logEntry;

aber er erkennt data gar net, geschweige denn _someText

kann es daran liegen, dass meine anderen klassen alle private sind?
 

Neue Beiträge

Zurück