C# ComboBox "Auswertung"

PeterParty

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
282
Schönen Abend @ ALL

Ich habe ein paar kleine Fragen zu ComboBox in C#.

Ich lehrne die Sprache seit 1 Monat also (Anfänger).

Ich wollte mir eine Art "Serial" Speicher schreiben,der mir meine Serials zu meinen (Original) Produkten ausgibt in einer "Textbox".

Ich bin soweit dass ich das Programm in der Combobox zwar auswählen kann,aber weiter schaffe ich es leider auch nicht ;(



Code:
 comboBox1.Items.AddRange(new string[]{"Programm1", "Programm2"});

 comboBox1.SelectedItem = "Programm1";

Wie kann ich es jetzt schaffen,dass ich wenn ich auf den Button "Lizens Anzeigen" Klicke das die Lizens zu dem Programm in der Textbox erscheint ?

Wäre über Hilfe sehr dankbar..


Mit freundlichen Grüßen

Peter
 
Können wir davon ausgehen das du die jeweiligen Lizenzen bereits im Programm gespeichert hast?
Wenn ja, würde ich die Datenstruktur Dictionar<TKey,TValue> empfehlen.
In dieser speicherst du einfach das Programm als Key und den Lizenzkey als Value ab.
Dann kannst du in deiner Comboboxprüfung folgendes machen.

Code:
string lizenzKey = string.Empty;

if(programKeyDictionary.TryGetValue("Programm1",out lizenzKey))
{
      this.textBox1.Text = lizenKey;
}

Ist jetzt leider nicht komplett getestet, aber das sollte ein Lösungsansatz sein.
 
Ich habe natürlich wieder das wichtigeste vergessen :(

Nein die "Serials" sind noch nicht im Programm gespeichert, da werd ich mir jetzt mal den Link anschauen wie ich dass am Besten machen kann..


Mfg

peter

EDIT: Kann ich es vlt. auch so machen dass ich die Serial in den Quellcode schreibe?

So nach dem Motto:


Code:
        string a = "65465-654654-64654-65465";
        if (combobox.text = programm1)
        {
         textbox1.Text = a;
        }
 
Zuletzt bearbeitet:
Können kannst du das schon, sicherlich aber nicht empfehlenswert.
Was ist wenn du neue Programme dazu bekommst? Dann musst du jedesmal dein Quellcode anpassen.
Besser wäre es vermutlich wenn man die Serials und Programme über die Benutzeroberfläche eingeben könnte und das Programm diese speichert und beim starten lädt.

Das ist so die Grundlogik von solchen Programmen.
 
toeffi schrieb:
Können kannst du das schon, sicherlich aber nicht empfehlenswert.
Was ist wenn du neue Programme dazu bekommst? Dann musst du jedesmal dein Quellcode anpassen.
Besser wäre es vermutlich wenn man die Serials und Programme über die Benutzeroberfläche eingeben könnte und das Programm diese speichert und beim starten lädt.

Das ist so die Grundlogik von solchen Programmen.


okay, dann muss ich mich damit mal beschäftigen wie ich daten von anderen Dateien "Auslese"...


Kannst du mi vlt. kurz erklären wie das mit meiner Methode gehen würde ?

bei mir kommt leider immer nur die Meldung:

Code:
Fehler	1	Eine implizite Konvertierung vom Typ "string" in "bool" ist nicht möglich.


Code:
                       var a = "98498-4984984-4489849-84948";

                        if (comboBox1.Text = "Programm1") <-- Funktioniert nicht !
                       {

                        textbox1.text = a;

                       }
 
ich würde immer den String.Equals(...) empfehlen... da du dann auch das Problem mit NULL Referenzzeiger nicht mehr hast, wenn du den Text nicht gesetzt hast.

String.Equals(null, "irgendwas") ist immer false ;)
 
TheCadillacMan schrieb:
Warum, wenn ich fragen darf?
"Equals" und der "==-Operator" verhalten sich doch gleich.

Da hast du natürlich Recht. Jedoch bietet dir string.Equals Überladungen an um gegen die Entsprechende Cultur zu prüfen und natürlich nicht zu vergessen, das Problem der Groß und Klein-Schreibung(wenn man darauf wert legt in seinem Programm)
 
roker002 schrieb:
ich würde immer den String.Equals(...) empfehlen... da du dann auch das Problem mit NULL Referenzzeiger nicht mehr hast...
Das Problem hast du auch mit dem "==-Operator" nicht. Der liefert auch "false" falls einer der Strings eine "null" ist.

@toeffi: Da hast du natürlich auch recht. Allerdings benutzte ich string.Equals nur, wenn ich die entsprechenden Überladungen brauche. Ansonsten finde ich "==" intuitiver. Aber das ist eine Geschmacksfrage.
Der Threadersteller scheint die entsprechenden Überladungen ja hier auch nicht zu brauchen, also ist es egal welche Methode man benutzt.
 
Jap hast du Recht.
Worauf ich auch noch hinaus will: Wenn man mal gezwungener Maßen Java programmieren muss, dann wird man mit dem == Operator Probleme beim String-Vergleich bekommen, weil der liefert nicht die Ergebnisse wie ein .NET == Operator beim String-Vergleich.
Ansonsten ist nichts daran auszusetzen wenn man die ÜBerladung nicht braucht ;)
 
Dein Daten kannst du gut in einer XML ablegen. Dann hast du wohl geformte Daten und kannst diese evtl. auch in einem anderen Programm von dir nutzen.
Dafür eignet sich sehr gut Linq-to-XML.

Was auch geht, aber nicht so schön ist, wie ich finde, wäre eine INI-Datei zu nutzen.

...sollen nur Anregungen sein, was du da nutzen könntest. ;)
 
Xml halte ich hier für viel zu großen Overhead. Ne einfache CSV-Datei reicht völlig aus, wenn man nur ein Programmname und ein Serial Key speichern will.
 
Ja, das ist richtig, jedoch hatte ich die Erweiterbarkeit im Hinterkopf.

Wenn nun zu einem Programm mehr Daten (min. Anforderungen, Version, Build-Nr. etc.) gespeichert werden sollen kann das mit XML recht gut realisiert werden. Es kann auch explizit in der XML nach Daten gesucht werden, aber das weißt du ja. ;)

Gut, wenn nur alle Daten abgelegt und auch alle wieder gelesen werden sollen, sollte eine CSV reichen. Wobei ich nicht so genau weiß, wie es bei CSV von statten geht.
 
Zuletzt bearbeitet:
Hi@All

Da ich Jetzt nochmal Zeit habe... und mein Programm mit der einfachen "IF-Abfrage" gut Funktioniert,wollte ich mich jetzt mal rangeben die einzelnen Serials + Produkt Name in eine .ini Datei zu Speichern.

Da ich aber noch nicht soviel Ahnung davon habe,wie ich das Anstellen kann.. wollte ich Fragen ob mir jmd. vielleicht einen Kleinen "Gedankenanstoß" geben könnte ?

Ich würde mich sehr darüber freuen...

Mfg

Peter
 
Okay..Ich habe noch eine kleine Frage.

Würde das auch mit einem Textdokument Funktionieren ?
Mfg

Peter
 
Okay,Dankeschön...

Code:
StreamWriter writer = new StreamWriter("serials.txt",true, System.Text.Encoding.Default);
writer.WriteLine(textBox1.Text);
writer.Close();

Jetzt gebe ich meine Serial in eine Textbox ein und er Speichert sie (wenn man den Button klickt) in das Textdokument (Serials.txt).
Soweit so gut..

Nur beim Auslesen habe ich meine Probleme.. Er sollte den Namen ja dan In der Combobox Anzeigen und die Serial in einer Textbox auseben.
Wie bekomm ich das smöglischt "einfach" realisiert ?

Mfg
peter
 
Zurück
Oben