Netz-Struktur in C#

doctiffo

Grünschnabel
Hallo Leute ,
ich versuche mich seit ein paar Wochen mit der Programmiersprache C# anzufreuden.
Ich habe eine Aufgabe zu lösen : Eine "Netz-Struktur" ( Eine Treeview Strukture) wo die Aktivitäten mit Inhalt : Text und Variablen (Daten in meinem Datenbank generiert) dargestellt sind.Was ich erreichen möchte , auf einen GUI Formen in einer "Netz-Struktur"( Weitergabe der Variablen von ChildNode zu ParentNode, Von Recht nach Links )
In Node Parent (Fenster ROOT repräsentiert Gesamtkosten+ Auschreibung der Aktivität in Form Text) werden berechnet die Variablen A, B, C gemäß A1,B1,C1 berechnet in ChildNode 1 (Fenster1) und A2,B2,C2 von ChildNode2 usw.
A= A1+ A2+..
B= B1+ B2+...
C= C1+ C2+..

Kann jemand mir nahebringen wie ich diese Struktur in GUI mit Hilfe von C# erstellen kann?
Wie ich am besten die Struktur in DB abspeichern kann?
Danke in Voraus.
Email : Doctiffo@yahoo.fr

-------------
 
Hallo!

Mein Vorschlag währe:
Die Komponent-Klasse zu verwenden.
Erstelle eine Komponent-Klasse die von dem TreeView ableitest.
Implementiere darin Metoden um Nodes zu erstellen, verändern und zu löschen
Dann brauchst Du Benutzerdefinierte Nodes. Erstelle Klassen, welche Du von der TreeNode ableitest und versieh sie mir deinen zusätzlichen Informationen (Variablen; Da die Nodes leider nur Text speichern können) und Methoden um diese Informationen weiterreichen zu können. --> OOP

Ich würde noch ein Methode in den TreeView implementieren die die Informationen (Datensatz für Datensatz) sammelt und in eine Datenbank schreibt. Die Datenbank würde ich als Referenz mit geben das sie ja nicht zum TreeView gehört.
Code:
MyCustomTreeView.SaveToDB( ref DBobj ){}
Wenn natürlich jemand eine leichtere Möglichkeit weiß, wie er die TreeNodeCollection des TreeView's einfach in eine DB speichen kann, kann er auch mithelfen. ;)

Hoffe das Hilft.

MfG cosmo
 
Ist es wahr dass eine Node nur Texte Speichern kann

Bezüglich meinem Projekt (Kalkulation von Prozesse mittels Oberfläche) möchte ich wie in Acces eine Baumstrukture erzeugen wo ich Prozesse durch Beschreibung und Summe in einem Fenster darstellen möchte.diese Ableitung von Fenster 1 (Gesamtsumme + Beschreibung in Form Text "GesamtSumme von Projekt) durch meherern Fenstern (1...N die auch aus Beschreibung-Text von Komponenten und Variable ZwischenSumme bestehen) muss abgespeichert sein.Da es um viele Daten geht , habe ich an DB gedacht.Jetzt meine Frage lautet wie kriege ich diese Struktur?Gibt es Methoden die mir dabei hilfen können? Wie kann ich am besten die Struktur durch Projekt _ID bzw Prozess_Fenster_ID jedesmal anrufen kann? Wie kann man am Besten die Rechnung von ZwischenSummen nach jeder Ableitung definieren kann?

Danke im voraus..

Freue mich sehr auf neuen Ideen bzw Fragen.
Tiffo
 
Hallo doctiffo!

Ist es wahr dass eine Node nur Texte Speichern kann
Ja. Deshalb währe es angebracht wenn die die TreeNode um die fehlenden Eigenschaften selber werweiterst indem Du dir eine Klasse schreibst welche den Container für diese Informationen darstellt und diese dann von der TreeNode erbt.
Code:
MyConstomNode : TreeNode {}
meine Frage lautet wie kriege ich diese Struktur?
Wenn Du weisst was für Daten anfallen kannst Du ja schonmal die Datenbankstruktur vorbereiten. Du wirst dann eine Routine programmieren müssen, welche alle Informationen sammelt und die dafür vorgesehenen Tabellen schreibt. [ Mit Gentle o. NHibernate sollte das Objektorientiert einfach werden. Versuch's aber erstmal "von Hand" (Lerneffekt). ]

Wie kann ich am besten die Struktur durch Projekt _ID bzw Prozess_Fenster_ID jedesmal anrufen?
Deine Strukturen kannst Du in deinem Namespace internal zur verfügung stellen damit alle Objekte darauf zugreifen können.
Die Kommunikation zwischen deinen Fenstern kann über Interfaces geregelt werden.

MfG, cosmo
 
Ähm, warum nicht das Tag-Property der Node nutzen?
Code:
TreeNode myNode = new TreeNode("Mein Node");
myNode.Tag = meinObject;
 
Naja, das ganze hat allerdings einen Haken, der allerdings erst bei großen Datenmengen und intensiven Nodes-Befragungen merklich wird: Es muss auf object und dann wieder zurück gecastet werden ... das kostet natürlich Zeit. Macht sich aber wie gesagt erst bemerkbar, wenn viel mit diesen Objekten gearbeitet wird und wenn du sehr sehr viele Nodes hast.
Sollte das der Fall sein, wird sowieso der gesamte TreeView langsam sein -> ergo Daten nachladen.
 
Code:
class Knoten 
{
int Kosten;
vektor Unterknoten;
public void addKnoten (Knoten);
public void removeKnoten (Knoten);
public int getKosten ( ) 
{
int lokal = 0;
for (int i = 0; i < Unterknoten.size(); i++)
lokal = lokal + Unterknoten.element(i).getKosten(i);
Kosten = lokal;
return Kosten;
}
}
class Gui
{
public Knoten k;
public fillKnoten ( )
{ read from database }
public Gui ( )
{
fillKnoten( );
Grafische Funktionen, abhängig vom Aufbau von Knoten K;
}
}
 
..

Was denkt Ihr? Vielleicht Ergänzung oder Korrektur danke..
Tiffo
 
Zuletzt bearbeitet:
Lösche bitte den letzten Post und aktualisiere mal bitte den vorletzten (8.).
Das ist so nicht zu lesen.
[Die Schriftarten wurden schon seit einiger Zeit abgeschafft.]

MfG, cosmo
 
Die untenstehende Methode kannst schon mal ein wenig verbessern.
Code:
public int getKosten ( ) 
{
  int lokal = 0;
  for (int i = 0; i < Unterknoten.size(); i++)
    lokal += Unterknoten.element(i).getKosten(i);

  return lokal;
}
Und man müsste sich anschaun, ob in diesem Fall eine foreach nicht schneller wäre .. vermutlich machts aber ohnehin nicht viel Unterschied ...
 

Neue Beiträge

Zurück