Ah ok, dann wird ich das mal probieren. Mit Event meinst Du was genau? Der Fehler entsteht sogar wenn ich im Designer einen Button setze und ausversehen zu schnell geklickt habe und bereits im Codefenster gelandet bin mit entsprechenden Autoeintrag inkl. Platzhalterbeschriftungen und diesen komplett wieder lösche, kann ich schon nicht mehr zum Designerfenster switchen da mich der Fehler schon erwartet. Also gleich zu Form1.Designer.cs changen und dort umbennennen oder den betroffenen Button etc. rauslöschen...
:
Das ist halt das Problem wenn man nicht weiss was eine Klasse ist und wie ein Event und Formular aufgebaut ist.
Wenn du auf den Button doppelt klickt, generiert dir Visual Studio ein Eventhandler Click. Dieser ist dafür da, dass überhaupt etwas passiert wenn du drauf klickst.
Zu diesem EventHandler gehört eine Methode. Diese Methode siehst du dann, wenn du in deiner Form1.cs Datei bist. Löscht du diese Methode von Hand, findet der Designer diese nicht mehr und kann deine schöne Form nicht mehr anzeigen.
Also bevor du die Methode löscht, zuerst den Eintrag im (wie sagst du so schön) "Blitz" löschen.
Nein.
Du gibst beide male eine andere Variable aus.
//Mein Wert ist das Objekt in der Liste.
//Beim Aufruf wird automatisch ToString() aufgerufen.
foreach (int meinWert in meinArray) {
Console.WriteLine (meinWert);
}
//i ist eine int Variable die du im Schleifenkopf deklariert hast.
//Du gibst einfach nur i aus
//siehe im Buch for - Schleifen
for (int i = 0; i < meinArray.Length; i++) {
Console.WriteLine (i);
}
Falsch ist es nicht, aber ich finde, dass ich die OOP besser mit einem Consolenprogramm lernte als mit Winforms.
Hat man das ganze OOP Zeugs ein bisschen verstanden, so sieht man danach ein Windows Form auch nur noch als einfache Klasse.
Nun werden seine Kameras aber immer mehr. Also will ich natürlich nicht jedes mal meinem Programm-Code an die Anzahl der Kameras anpassen.
Du brauchst dann doch nur ein Button der dir eine neue Tab erstellt mit dem Usercontrol drin.
Das Usercontrol enthält ja dann auch alle Events.
Was da am Code anzupassen ist verstehe ich jetzt nicht. Machen doch alle das gleiche diese Dinger.
Steuerelement ist ein Button. Jetzt kannst du von dem Standart Button ableiten und deine eigenen Funktionalitäten einbauen.
UserControl ist ein Contianer in dem du viele Steuerelemente hinzufügen kannst und dann in deine Tab als "Steuerelement" aufnehmen kannst. Ich glaube das ist das was du willst.
Hmmm... vielleicht verstehst du mich nicht.
Das ist deine Übersicht. Du willst jetzt eine Tabelle die diese Daten enthält um diese dann anzeigen zu können. Über diese Anzeige willst du dann zu den jeweiligen Details gelangen um diese bearbeiten zu können. Richtig?
Zitat
Das sieht in etwas wie folgt aus: Muster Hans (ID 25)
- Adressen
-- Postanschrift
-- Hauptanschrift
- Kommunikationsdaten
-- E-Mail
-- Telefon
- Dienstverhältnisse
-- 01.01.2008 - 31.12.2009
-- 01.01.2010 - offen
- Fortbildungen
-- 01.01.2008 - 14.01.2008
-- ...
Fett sind Tabellen richtig?
Da kannst doch schön eine Abfrage mit den Daten für die Ansicht in der DB erstellen. Diese nimmst du dann mit ins EF wie eine Tabelle.
Eigentlich sehe ich das so wie Diräkt.
Um bei deinem Beispiel zu beiben:
Zitat
historische Speicherung von Anwendungsfällen zu einer Person. Von wann bis wann war sie krank. Hat sie Atteste zur Krankheit vorgelegt? Wann hat sie die Krankheit gemeldet?...
Da ja eine Person mehrer solcher Atteste in seiner Laufbahn bringen kann, ist es keine 1:1 Beziehung mehr.
Auch dein Beispiel mit der Adresse ist keine 1:1 Beziehung. Eine Person kann in seinem Leben mehrmals die Adresse ändern also auch wieder eine 1:n Beziehung.
1:1 verstehe ich zum Beispiel wenn du der Name der Person in einer Tabelle hast und das Geburtsdatum in einer anderen Tabelle.
Alles wickelt sich ja über die Person ID ab.
Du kannst ja schon eine View in der Datenbank mit den Daten, welche in der Vorgangsbaum angezeigt werden sollen, zusammenstellen.
Später kommst du dann ja über die ID auf die einzelnen Daten aus den Tabellen.
System.Drawing.RectangleF
System.Drawing.Rectangle
+die Point und Size Strukturen
Wenn ich jetzt eine Klassenbiblithek erstellen will, welche der beiden Namespace ist sinnvoller, um die Klassen in Windows.Form und in Window einsetzen zu können.
Ich glaube du wirst kein Buch finden, welches genau das beinhaltet, dass du gerne hättest.
Ich habe mit dem Online Buch angefangen. Da wird alles von Anfang an erklärt. Auch das VS selber wird gut erklärt und Debuggen.
Vieles muss man halt ausprobieren und in der MS Hilfe nachschlagen. Die Frameworkklassen findet man alle in der Hilfe F1 hilft.
Für mich war eigentlich nicht das schwierigste die Sprache selber zu lernen, sondern das Programmieren im gesamten.
(Ich hasse die OOP Beispiele mit dem Auto)
Wenn du gucken willst, ob die Inhalte der Klasse gleich sind, muss du die Inhalte der Klassen (edit: oder Zettel 8)) vergleichen.
Dafür kannst du in der zu prüfenden Klasse Equals() überschreiben.
Im Prinzip sollte man darauf achten, daß alle Benutzereingaben soweit wie möglich validiert werden, um dann an dieser Stelle darauf reagieren zu können.
Und wenn die Eingabe nicht i.O ist, muss man das doch dem Benutzer melden, also muss ja wieder eine Exception ausgelöst werden.
In der Datenschicht kannst man ja nicht einfach MessageBox("Da ist ein Fehler!").Show() anzeigen.
Die Information muss doch mit throw new Exception() weitergegeben werden? Oder?
Ich werde das mit einer Eigenschaft machen, die auf korrupt gestellt wird, wenn die Struktur nicht mehr Rückgängig gemacht werden konnte.
So kann ich, bevor das nächste Mal Daten in den Ordner gespeichert werden sollen, dem Benutzer melden, dass der vorhandene Speicherort korrupt ist.
Bei folgendem Code möchte ich, wenn das Erstellen der Ordner schief geht, diese wieder löschen.
Nun kann es bei meiner Aufräum Aktion im catch Block wieder zu einer Exception kommen.
Wie wird das in diesem Fall gehandhabt? Ich will keine halb erstellte Ordnerstruktur haben. Entweder werden alle erstellt oder gar nichts.
public static void Struktur(String Pfad)
{
DirectoryInfo deltaV = null;
try
{
ReSPC_Data set = new ReSPC_Data();
deltaV = new DirectoryInfo(Path.Combine(Pfad, "DELTAV"));
deltaV.Create();
set.Strukturpfad = deltaV.FullName;
deltaV.CreateSubdirectory("Operations");
deltaV.CreateSubdirectory("Enums");
deltaV.CreateSubdirectory("Procedures");
deltaV.CreateSubdirectory("Unitprocedures");
}
catch
{
if(deltaV != null)
deltaV.Delete(true);
throw;
}
}
Wie das vorgehen, wenn Code im Catchblock, auch eine Exception auslösen kann.
Die Objekte erstelle ich aus einer Textdatei, welche ich von einem externen Programm bekomme. Das Programm erwartet dann auch wieder ein gleiches Format zurück.
Also eine Klasse Operation ("OP_AUSTR_GS") die in einer 1:n Beziehung mit der Klasse Parameter steht.
Vom User darf nur VALUE geändert werden.
Will der User eine neue Operation erstellen, wird eine Kopie von der Standart Operation erstellt, der er ein neuen Namen geben muss, wenn die alte nicht überschrieben werden soll. Das zu prüfen ist die Sache vom Benutzer.
Der Benutzer meiner DLL, bekommt von mir eine Klasse OperationListe, aus der er alle Operationen mit den Parameter bekommt.
Ich erwarte dann von ihm eine geänderte Operation oder geänderte Operationen in einer Liste zurück.
Diese Daten werden dann wieder als Textdatei gespeichert, die vorhanden OP überschrieben, die Neuen neu angelegt.
Wie der User die Value-Werte ändert weiss ich nicht. Wenn ich jetzt mein geschreibsel so lese, glaube ich nicht, dass ich INotifyPropertyChanged brauche.
Das Designe ist komplizierter als ich am Anfang vom Projekt gedacht habe. 8)
Gruss Lothi
Vielen Dank für die Ratschläge.
Wenigstens bin oder war ich nicht ganz auf dem Holzweg. Habe mich ein bisschen mit der Datenbindung beschäftigt und wurde dadurch unsicher.
Werde also bei List<T> bleiben.