Hallo,
ich weiß gerade nicht genau wie ich das machen soll.
Ich habe eine extra Klasse für einige Methoden erstellt.
Diese dient dazu etwas zu der Listbox in der Form hinzuzufügen und auch regelmäßig Überprüfungen durchzuführen.
Im Endeffekt funktioniert das auch, allerdings besteht im Moment das Problem dass sich die Form immer wieder öffnet, da diese Methode auch öfter aufgerufen wird.
Das liegt vermutlich daran, dass ich am Anfang der Methode ein Objekt der Form erstelle, um auf die Methode zugreifen zu können die dafür verantwortlich ist etwas in die Listbox zu schreiben.
Im Moment weiß ich nicht wirklich wie ich das lösen soll, bzw. wie es am geschicktesten wäre.
Vielleicht kann mir ja irgendwer einen Denkanstoß geben.
Hey,
ohne explizit genau zu wissen, wie es derzeit umgesetzt hast, ist es schwer zu sagen, was man tun könnte.
Du hast eine Methoden-Klasse, die sich z.B. um die Verarbeitung der Listbox kümmert? Werden da einzig Daten geaddet und validiert?
Das liegt vermutlich daran, dass ich am Anfang der Methode ein Objekt der Form erstelle, um auf die Methode zugreifen zu können die dafür verantwortlich ist etwas in die Listbox zu schreiben.
I-wie klingt dies etwas wirr... Ich vermute, dass das Erstellen der Form eign. unnötig ist, wenn dein vorhaben sich auf eine Listbox und deren verhalten sich bezieht.
Ein bisschen Code könnte etwas Licht rein bringen über den Ist-Zustand und seinen Weg zum Soll-Zustand.
Hi Farean,
man braucht keine neue Instanz der Form zu erstellen, um auf Controls einer vorhandene Form zuzugreifen. Verwende stattdessen lieber das this
-Schlüsselwort. Ein Problem dabei wird sicherlich auch sein, daß bei dir eine gegenseitige Abhängigkeit zwischen deiner Form und der "extra Klasse" (deine Businesslogik?) besteht.
Bitte beachte in Zukunft [Hinweis] Wie poste ich richtig?, Punkt 1 und 5.
Zum Thema OOP und C# empfehle ich das OpenBook von Galileo und den Artikel [FAQ] Wie finde ich den Einstieg in C#?.
Christian
Weeks of programming can save you hours of planning
Hallo,
danke erst einmal für die Antworten.
Ich habe mich wohl etwas falsch ausgedrückt, sorry.
Es gibt eine Form (Form1) und eine Klasse (Klasse1).
Das sind jetzt nur einmal Beispielnamen.
In Form1, gibt es eine Methode mit der eine vorhandene Listbox gefüllt werden soll, die Werte bekommt die Methode per Parameter der Klasse1 übergeben.
Mein Problem war dass sich die Form1 mehrmals aufgerufen hat, da ich in der Klasse1 jedes mal zu Beginn mit
Form1 form = new Form1();
gearbeitet hatte.
Wenn ich der Methode der Klasse1 die Form übergebe, funktioniert das auch, also so:
class Klasse1
{
public void getValues(Form1 form)
{
//führe Berechnungen aus
form.FillListbox("wert1", "wert2", "wert3");
}
}
Der Code in der Form wäre dann z. B. so:
private void Button1_Click(object sender, EventArgs e)
{
Klasse1 class = new Klasse1();
class.getValues(this);
}
public void FillListbox(string value1, string value2, string value 3)
{
//füge Daten zur Listbox hinzu
}
Ist das so in Ordnung, oder sollte man noch etwas beachten?
Hallo Farean,
dass du in dem Form ein Objekt der Klasse Klasse1 erzeugst, das dann wiederum eine Methode des Forms aufruft, ist keine gute Idee. Solche zyklischen Abhängigkeiten sollte man unbedingt vermeiden. Schau dazu auch mal in [FAQ] Kommunikation von 2 Forms (gilt genauso für Kommunikation von einem Form und einem anderen Objekt.
Außerdem sollte man Daten nicht per Add in eine ListBox füllen, sondern besser DataBindig verwenden.
Das können wir hier aber nicht abschließend behandeln. Bitte lies dich erstmal gründlich in die Windows Forms Programmierung ein. Passende Bücher findest du in Buchempfehlungen.
oder sollte man noch etwas beachten?
Das, was ich geschrieben habe und [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
herbivore