PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Falscher Rückgabewert einer Methode beim Aufruf einer Methode aus einem anderen Formu


Lord Nikon
2004-03-14, 18:03:18
Hi,
hier erstmal der Code:

// Hauptformular
public class Bearbeiten
{

String suchbegriff="";
String Ersetzungsbegriff="";
public String inhalt="";
public String getInhalt()
{


return this.inhalt;
}
public void setInhalt(String s)
{

this.inhalt=s;
}
}
// Anderes Formular
Bearbeiten b=new Bearbeiten();
MessageBox.Show(b.getInhalt());
b.setSuche(this.txtsuchen.Text);
b.setErsetze(this.txter.Text);
String d="";
d=b.suchersetze(b.getInhalt());

Wenn ich innerhalb des Hauptformulars die getInhalt Methode ausführe geht alles.Wenn ich von diesem Nebenformular das aufrufe gibt es einen Leerstring als Rückgabenwert. Warum ist das so ?
EDIT:
sprache ist c#
Ich setze den Inhalt zu Test zwecken vorher auf "Test"

Lord Nikon
2004-03-15, 14:51:21
Wenn ich den Inhalt im Nebenformular mit der Methode setInhalt setze wird das richtig zurückgegeben. Woran liegt das?

Xmas
2004-03-15, 15:05:08
Wo und wie setzt du denn den Inhalt?

Aqualon
2004-03-15, 15:06:58
Original geschrieben von Lord Nikon
Wenn ich den Inhalt im Nebenformular mit der Methode setInhalt setze wird das richtig zurückgegeben. Woran liegt das?
Die Funktion getInhalt() liefert den Wert zurück, der in der Variable inhalt gespeichert ist. Und solange diese nicht mittels setInhalt() geändert worden ist, wird ein Leerstring zurückgeliefert.

Du wirst also in deinem Hauptformular irgendwo die setInhalt() aufrufen und deswegen mit getInhalt() keinen Leerstring zurückbekommen.

Aqua

Lord Nikon
2004-03-15, 15:32:29
Original geschrieben von Xmas
Wo und wie setzt du denn den Inhalt?
Sobald ein User in meinem Menü den Punkt Suchenersetzen gedrückt hat wird der Inhalt eines RTF mit setInhalt(RTFT.Text) in Inhalt gespeichert.Dies mache ich im Hauptformular.
EDIT:
Das setzen des Inhalts geschieht also in der Klassen die automatisch angelegt wird beim Start eines neues Projektes(WinForm).

Wie bekomme ich diesen Wert ins andere Formular übertragen ?

@Aqualon
Jo das liegt das wohl daran das ich im Hauptformular den Inhalt setze. Das Problem ist das ich den Inhalt nur setze will wenn der User den oben erwähnten Menüpunkt anklicke.

Xmas
2004-03-15, 15:44:06
Mit welcher Bearbeiten-Instanz rufst du setInhalt() auf?

Lord Nikon
2004-03-15, 15:59:18
Ich mache mir direkt als Klassenvariable die Instanz

public class WinForm : System.Windows.Forms.Form
{

Bearbeiten bework=new Bearbeiten();
// nur komponenten
}

mit dieser ruf ich setInhalt() auf.

Xmas
2004-03-15, 16:10:11
Na wenn du zwei verschiedene Instanzen der Klasse Bearbeiten hast, kannst du auch nicht erwarten dass die eine (b) beeinflusst wird, wenn du mit der anderen (bework) setInhalt aufrufst...

Dann musst du schon Klassenvariablen (static) verwenden — oder Bearbeiten gleich als Singleton-Klasse realisieren.

Lord Nikon
2004-03-15, 16:57:03
ich habs einfacher gelöst:
Ich hab mir im Nebenformular einen Konstruktur geschrieben und in diesem wird der Inhalt übergeben.