Abstrakte Basisklasse == Interface.
Das ist nicht korrekt! Denn eine abstrakte Basisklasse hat mindestens eine abstrakte Methode, kann aber auch Methoden mit Implementierung besitzen!
Nein, Headhunter hat das schon vollkommen richtig erklärt.
Deine Labels sind nicht direkt mit den Variablen verknüpft. Du hast nur mal der Text-Eigenschaft deiner Labels den Wert deiner Variablen hinzugefügt. Diesen werden sie bis in alle Ewigkeit behalten, falls nicht Du die Text-Eigenschaft neu setzt.
Und das geht eben nur über eine eigens geschriebene Funktion, in der du allen deinen Labels die veränderten Variablen zuweist.
Allternativ könntest du dir das Observer-Pattern anschauen. Das Ziel dieses Pattern ist es eben diese Werteänderung ein wenig zu vereinfachen und vorallem den Datenblock recht gut von deiner Anzeige abzuschirmen.
http://en.wikipedia.org/wiki/Observer_pattern (kenne die Qualität dieses Artikels nicht, ansonsten google)
Ich sehe grad, dass deine Datenklasse eine statische Klasse is. Das ist für das Observer-Pattern etwas ungünstig. Zumindest würde es zu unschönem Code führen. Vielleicht musst du die Datenklasse ja nicht statisch machen. Ansonsten wäre das Singleton-Pattern die bessere Alternative.
Ich habe eine Klasse von ListView abgeleitet in der die Columnheader mit einen Farbverlauf gefüllt werden sollen.Nun werden einige Header einen Pixel grösser gezeichnet als die anderen(die untere Kante des Randes fehlt).Ich habe r überprüft,das Rechteck hat immer die selbe Höhe und beginnt bei 0.Ich kann mir nicht erklären wie es zu diesen Abweichungen kommt.
//e.DrawBackground();
protected override void OnDrawColumnHeader(System.Windows.Forms.DrawListViewColumnHeaderEventArgs e)
{
Rectangle r = new Rectangle();
r.Location = e.Bounds.Location;
r.Width = e.Bounds.Width;
r.Height = e.Bounds.Height - 2;
Brush brush = new LinearGradientBrush(r, Header_Backgroundcolor1, Header_Backgroundcolor2, 90);
e.Graphics.FillRectangle(brush, r);
Pen pen = new Pen(new LinearGradientBrush(r, Header_Backgroundcolor2, Header_Backgroundcolor1, 90),1);
e.Graphics.DrawRectangle(pen, r);
e.DrawText();
}
Also ich weiß jetzt nicht ob das die Ideale Lösung ist, aber ich hab es jetzt doch mit einem XmlDocument Objekt gemacht!
Und zwar so:
if (File.Exists(sFilename))
{
// dann laden
doc.Load(sFilename);
}
else
{
// ansonsten Versions- und Stammknoten anlegen
node = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
doc.AppendChild(node);
node = doc.CreateElement("Fehlerkategorien");
doc.AppendChild(node);
}
// Stammknoten zuweisen
parentNode = doc.DocumentElement;
// Knoten der Kategorie einfügen
node = doc.CreateElement("Kategorie");
node.Attributes.Append(doc.CreateAttribute("Typ"));
node.Attributes["Typ"].InnerText = tBCategory.Text;
doc.DocumentElement.AppendChild(node);
// Kommentar der Kategorie einfügen
node = doc.CreateComment(tBdescription.Text);
doc.DocumentElement.AppendChild(node);
// suche den Knoten
parentNode = doc.SelectSingleNode("./Fehlerkategorien/Kategorie[@Typ='"+tBCategory.Text+"']");
if (parentNode != null)
{
node = doc.CreateElement("AOI-Abdeckung");
node.InnerText = MtbAoi.Text;
parentNode.AppendChild(node);
}
doc.Save(sFilename);
einfach einem XML einen Knoten hinzufügen, bzw. Knoten + Unterknoten
Natürlich kann man sie für multithreading verwenden, man sollte dann aber nciht solche sachen machen wie irgendwelche member des singletons vom jeweiligen thread neu zu setzen, dass gibt doch nur chaos.
hm ich weiß ich nerv! Ich hab mal wieder voreilige Schlüsse gezogen, also in meiner Hauptaplikation geht es, in der Graphlib aber nicht!
Also jetzt mal ganz gediegen, Ich hab drei Projektmappen:
Graphlib (dll)
Referenzen:
TestShapes
TestShapes (dll)
Referenzen:
Graphlib
TestSim (exe)
Referenzen:
Graphlib
Testshapes
So in der Hauptaplikation geht es aber in Graphlib nicht!
Siehe dazu vielleicht auch nochmal Vererbungsstruktur meiner Shapes
hier
Kann mir einer sagen wieso? Vielleicht LordJaxom??
Wenn du dein PW mit der Cryptographie-Klasse verschlüsseln willst, dann solltest du dir erst mal überlegen welchen Verschlüsselungs Algorithmus du verwenden willst weil die Cryptographie-Klasse mehrere unterstüzt. Ich weiß das weil ich für meine Abschussprüfung eine Verschlüsselungs Programm in C# schreiben muss ich da auch die Cryptographie-Klasse nutze. Ich hab da mal eine Seite gefunden wo das ganze sehr gut beschrieben ist, wenn ich den Link noch finde dann schreib ich ihn hier.
EDIT: Ich weiß die Seite leider nicht mehr, aber das hier könnte dir vielleicht auch weiter helfen.
http://www.schlechte-doku-hasser.de/modules.php?op=modload&name=News&file=article&sid=85