Problem mit Funktionen

Reverent

Erfahrenes Mitglied
Hallo Leute,
ich brauchte da mal wieder einen Ratschlag und zwar:
Ich habe ihr eine Funktion, die Werte aus einer ArrayList in einer ListView darstellt:
Code:
#region void FillListView()
public void FillListView()
{
  if(_clVariable.alBenutzer != null)
  {
    foreach(Struct stBenutzer in _clVariable.alBenutzer)
    {
      listVBenutzer.Items.Add(stBenutzer.strName);
      listVBenutzer.Items[listVBenutzer.Items.Count-1].SubItems.Add(stBenutzer.iZeit.ToString());
    }
  }
}
#endregion
Ich habe da jetzt die Form und eine Klasse, in der ich alle Funktionen reinpacken möchte. So was ist jetzt mit so Arten von Funktionen (wie oben) die auf Elemente in der Form zurück greifen.
Wie bekommen ich jetzt die ListView in die Klasse?
Ok ist kann die ListView mit übergeben, daß mag hier vielleicht noch gehen, aber was ist mit Funktionen je nach Programmstand z.B. Button enabeln, TextBoxen ausblenden, oder z.B. eine TabPage in den Vordergrund stellen u.s.w.

Oder zählen diese Funktionen zur Form?
Wie macht Ihr das?

Ich hoffe Ihr versteht mein Problem!!
Bis Dann
 

Christian Kusmanow

Erfahrenes Mitglied
Hallo Reverent!

Reverent hat gesagt.:
Wie bekommen ich jetzt die ListView in die Klasse?
Also der ListView gehört ganz und gar nicht zur Klasse.
Kannst ihn also getrost im Form füllen.
Schau Dir mal ListView.DataBindings an. ;)
Reverent hat gesagt.:
[...] aber was ist mit Funktionen je nach Programmstand z.B. Button enabeln, TextBoxen ausblenden, oder z.B. eine TabPage in den Vordergrund stellen u.s.w.

Oder zählen diese Funktionen zur Form?
Wie macht Ihr das?
Im Form Implementieren. Das Form visualisiert, also gehört es zum Form.

Es gibt noch eine weitere Möglichkeit UserControls und/oder Benutzerdefinierte Controls zu erstellen
und den Code darin zu implementieren. Macht aber nur bei größen Anwendungen sinn.

MfG, cosmo
 

LordDeath

Erfahrenes Mitglied
Hi

Ich mach das enabeln, diabeln, usw. immer in den Forms. Es geht vielleicht auch wenn du Methoden in deinen Klassen schreibst die das machen. Dazu müsstest du dann nur das entsprechende Objekt übergeben. Ob das eine saubere Lösung ist weiß ich nicht. Ergo Probiers einfach aus.

BloodyGreetz
 

Christian Kusmanow

Erfahrenes Mitglied
LordDeath hat gesagt.:
Ob das eine saubere Lösung ist weiß ich nicht. Ergo Probiers einfach aus.
Dann weiss er immer noch nicht ob's so sauber ist.
Sowieso währe es nicht sauber.

Standartisiere deine Klassen. Und verwurschtle nicht alles miteinander.
Wenn Du das bedürfnis hast innderhalb deiner Klasse,
ein Ereigniss auf deinem Form auszulösen, dann mach das mit einem Event
oder ganz einfach wie es der Norbert vorschlagen würde mit einer Reverenz auf dein Form.
Wenn deine Klasse aber mit einer Referenz oder gar einem Interface deines Forms arbeitet,
kannst sie ohne Anpassungen nirgendwo weiterverwenden(!)

MfG, cosmo
 

Norbert Eder

Erfahrenes Mitglied
Wenn schon von mir gesprochen wird, dann mach ich mal lieber selber einen Vorschlag :p

Also Reverent, du musst da noch eine Kleinigkeit lernen:
Deine Methoden werden in einigen Fällen Rückgabewerte liefern müssen. Diese Rückgabewerte kannst du dann innerhalb deiner Form hernehmen, um die Daten zu visualisieren. D.h. das Befüllen der ListBox oder was auch immer erfolgt in der Form und nicht in einer anderen Klasse.

Klassen sollen bestimmte Funktionalitäten kapseln. Diese sollen eigentlich nichts mit der Visualisierung zu tun haben. Ergo werden auch keine Referenzen auf Formen oder ListBoxen etc. übergeben.

Wenn du diese Trennung sauber machen kannst, dann tust du dir auch mit der Programmierung bzw. mit der Wartung und Pflege leichter. Anfangs ergeben sich dabei natürlich gedanklich ein paar Probleme, aber das legt sich mit der Zeit.