C# Mehrere Objekte speichern und abrufen

Keyrank

Cadet 3rd Year
Registriert
Apr. 2012
Beiträge
35
Guten Tag allen,

Ich sitze nun schon seit Stunden da und versuche durch Recherche, bastelei - alles was mir einfällt ein Programm zu schreiben, doch es hängt an vielen Punkten:

Programmziel:
Oberfläche auf der Daten eingegeben werden (zahl und zeichen - 3 Attribute werden eingegeben, einer davon über eine Combobox) und diese dann als "Objekt" gespeichert werden.
So würde ich gerne Objekte direkt anlegen auf der Oberfläche, vielleicht auch neue Auswahlmöglichkeiten über einen Button und ein Textfeld der Combobox hinzufügen.

Die eingegebenen Daten will ich (am besten nach Kategorie, welche in der Combobox ausgewählt wurde) ausgeben lassen.

Mein bisheriger Stand an Quellcode ist nicht nennenswert, er funktioniert zwar für ein Objekt - aber auch da nicht richtig.


Habe nun das Openbook, und so ziemlich alles was ich im Netz fand durchforstet - aber weitergekommen bin ich nicht, darum würde ich gerne hier fragen ob nicht jemand mir Hilfe geben kann zu dem was ich schreiben will.

Leider ist mein Programmierwissen was C# angeht ziemlich gering denke ich :(

Danke euch vorweg schon mal für jede Hilfestellung
 
Poste doch bitte lauffähigen Code. Dann kann man sehen, wo es hakt und konkret einsteigen.
 
Damit kannst du der Combobox neue Elemente hinzufügen.

Code:
comboBox1.Items.Add("Kategorie");

Für die daten würde ich ein mehrdimensionales Array erstellen und dieses dann wider mit einer schleife auslesen.
 
Ich weiß, dass du das nicht hören willst, aber es hat einen Grund, wieso jedes Buch, jeder Kurs oder jedes Tutorial zu einer Sprache nicht mit GUI-Entwicklung anfängt, sondern erstmal ziemlich öde mit Konsolen-Anwendungen daher kommt.

Was du beschreibst klingt wahnsinnig simpel.
Das du es nicht schaffst, liegt wahrscheinlich daran, dass du nicht wirklich weißt was Klassen sind und wie man damit arbeitet. Das Event-System der GUI ist dir vermutlich auch fremd, egal ob Forms oder WPF.

Also, ein gut gemeinter Rat.
Erstell ein neues Projekt, diesmal eine Konsolen-Anwendung.
Dem Projekt fügst du eine neue Klasse hinzu und gestalltest diese nach deinen Wünschen. Soll heißen, dass ein Objekt der Klasse in der Lage ist die Werte, die du später eingeben möchtest, speichern kann.

Bsp.
Code:
namespace MeineApp
{
  public class Person
  {
    public string Vorname { get; private set; }
    public string Nachname { get; private set; }

    public Person( string vorname, string nachname )
    {
      Vorname = vorname;
      Nachname = nachname;
    }
  }
}


In der Main-Methode der Anwendung (in Program.cs), erstellst du dann ein paar Objekte vom Typen deiner Klasse (hier Person) und spielst ein wenig damit rum (einlesen von der Konsole, ausgeben, was auch immer).

Code:
static void main(string[] args)
{
    Person ich = new Person( "John", "Doe" );
    
    Console.Out.WriteLine( "Vornamen eingeben:" );
    string vorname = Console.In.ReadLine();
    Console.Out.WriteLine( "Nachnamen eingeben:" );
    string nachname = Console.In.ReadLine();

    Person p = new Person( vorname, nachname );
    Console.Out.WriteLine( string.Format( "Ich bin {0} {1}", ich.Vorname, ich.Nachname ) );
    Console.Out.WriteLine( string.Format( "Du bist {0} {1}", p.Vorname, p.Nachname ) );
}

usw...

Wenn du dann glaubst, du hast das "System" einigermaßen verstanden, kannst du dich nochmal an der GUI versuchen. Das Prinzip dabei ist das Gleiche

Code:
private List<Person> _mitarbeiter;
private List<Person> _freunde;

protected void OnButtonClick( object sender, RoutedEventArgs e )
{
    if ( combobox.SelectedValue == "Mitarbeiter" )
    {
      Person mitarbeiter = new Person( textboxVorname.Text, textboxNachname.Text );
      _mitarbeiter.Add( mitarbeiter );
    }

    if ( combobox.SelectedValue == "Freund" )
    {
      Person freund = new Person( textboxVorname.Text, textboxNachname.Text );
      _freunde.Add( freund );
    }
}
 
@soares
Hat sich leider inzwischen erledigt, da ich herausgefunden habe das einige Dinge die ich noch vorhatte mit dem Programm nicht so einfach sind wie gedacht..
(Eingegebenes speichern und beim start wieder in dieser Form zu verfügung haben)

@chris2603
Vielen Dank! Werde ich in Zukunft öfter verwenden ;-)

@holy
Danke! Vielen Dank!
Ich habe 2010 mit C# angefangen, Konsolenprogrammierung ein halbes Jahr, dann ein halbes Jahr GUI - leider bis jetzt nun gar nichts mehr in der Richtung gemacht - nicht mal ein "Hello World"... und tu mich doch sehr schwer wieder mit dem reinkommen, aber mit den Klassen hast du recht.

Ich werde deine Tipps jetzt in jedem Fall durchgehen und machen, das in der Art hatte ich mir schon vor einer weile gewünscht ...


Also noch mal vielen Dank an alle Antworten, besonders an "holy"!

Zu meiner "Programmidee":
Nachdem ich gelesen habe wie es aussieht die eingegebenen Daten zu speichern und beim nächsten Start wieder zu haben (txt Datei, ini Datei etc...) wird es wohl doch besser sein das alles in einer Excel einzupflegen.
 
Keyrank schrieb:
Hat sich leider inzwischen erledigt, da ich herausgefunden habe das einige Dinge die ich noch vorhatte mit dem Programm nicht so einfach sind wie gedacht..
(Eingegebenes speichern und beim start wieder in dieser Form zu verfügung haben)

Das verstehe ich nicht. Das gehört doch meist zu den einfachsten Dingen, die man programmieren kann. Dafür braucht es doch nur zwei Methoden (laden & speichern) und die sind sich prinzipiell ziemlich ähnlich.
 
Gut, ich habe mal blauäugig geglaubt was ich gelesen habe - da ich selbst etwas in der Art noch nicht gemacht habe.

Wobei klar das Programm am Ende doch komfortabler wäre, wenn es "tun würde, wie ich es gerne hätte" - wobei die gleiche Funktionalität machbar wäre in Excel ... andererseits würde C# Übung mir gut tun ;-)

Ich probiere mich nun erst mal an dem von holy, dann geht es weiter.

EDIT:
Ich komme tatsächlich Schritt für Schritt weiter, und bin gerade dabei irgendwie die Textbox (oder auch RichTextbox - je nachdem was bedienfreundlicher wird) zu speichern und zu laden über zwei Buttons.

Die Hilfe mit den Klassen hat mir sehr geholfen.
 
Zuletzt bearbeitet:
Keyrank schrieb:
Nachdem ich gelesen habe wie es aussieht die eingegebenen Daten zu speichern und beim nächsten Start wieder zu haben (txt Datei, ini Datei etc...) wird es wohl doch besser sein das alles in einer Excel einzupflegen.
Was hast du denn gelesen?

Keyrank schrieb:
Ich komme tatsächlich Schritt für Schritt weiter, und bin gerade dabei irgendwie die Textbox (oder auch RichTextbox - je nachdem was bedienfreundlicher wird) zu speichern und zu laden über zwei Buttons.
Hier kannst du nachlesen, wie du deine Personenliste(im Beispiel eine Autoliste) in eine Datei abspeichern kannst und sie auch wieder beim Programmstart laden kannst.
 

Ähnliche Themen

Antworten
3
Aufrufe
8.196
Zurück
Oben