|
|
||||||
|
#1
|
|
|
|
|
Hallo liebe Community,
ich habe eine Combobox, die etwa 20 Einträge beinhaltet. Die Anforderung ist jetzt, dass die Einträge nicht aus einer Datenbank (Server) kommen sollen, sondern aus einer Datei, die als Ressource dem Projekt hinzugefügt wurde und später mit kompiliert wird. Welche Möglichkeiten bieten sich mir da? Ich dachte an eine einfache txt-Datei, die ich dann auslese und Zeile für Zeile der Combobox hinzufüge. Jedoch hat es einen unprofessionellen Touch. Gibt es im .Net Framework schon irgendwelche Klassen dafür? danke für jede Hilfe Grüße Manuel |
|
|
|
#2
|
|
|
|
|
Hallo Manuel,
Am Thu, 11 Mar 2010 15:16:20 +0100 schrieb Manuel Kobloch: > ich habe eine Combobox, die etwa 20 Einträge beinhaltet. Die Anforderung ist > jetzt, dass die Einträge nicht aus einer Datenbank (Server) kommen sollen, > sondern aus einer Datei, die als Ressource dem Projekt hinzugefügt wurde und > später mit kompiliert wird. Wenn es reine Texteinträge sind, würde ich sie einfach im Forms-Editor der Items-Auflistung hinzufügen. Natürlich kannst Du auch eine Text- oder XML-Datei als Ressource einbetten, oder eine eigens dafür geschriebene Klasse serialisieren etc., aber wozu der Aufwand? Gruss Marcel |
|
#3
|
|
|
|
|
On Thu, 11 Mar 2010 15:16:20 +0100, Manuel Kobloch wrote:
> ich habe eine Combobox, die etwa 20 Einträge beinhaltet. Die Anforderung ist > jetzt, dass die Einträge nicht aus einer Datenbank (Server) kommen sollen, > sondern aus einer Datei, die als Ressource dem Projekt hinzugefügt wurde und > später mit kompiliert wird. Also werden sich diese Daten nicht innerhalb einer fertig kompilierten Aseembly, bei normaler Nutzung ändern? Denn nur dann würde es mit einer einkompilierten Resource funktionieren. In dem Fall einfach über den Resourcemanager des Projekts die entsprechende Textdatei hinzufügen. Wenn sich die Daten bei Nutzung ändern sollen, dann lege diese z.B in der Nutzereigenen Settingsdatei z.B. als StringCollection ab. > Gibt es im .Net Framework > schon irgendwelche Klassen dafür? Alles Fertig mit grafischer Oberfläche in VS vorhanden. Zugriff dann bei Resourcen über Properties.Resources.Resourcename bzw. typisiert bei Einstellungen über Properties.Settings.Default.Settingname Resourcen + Einstellungen kannst Du z.B. Über die Projekteinstellungen verwalten. (Rechtsklick im Solutionexplorer aufs Projekt => Einstellungen) MfG, Ulf |
|
#4
|
|
|
|
|
Hallo Manuel,
> ich habe eine Combobox, die etwa 20 Einträge beinhaltet. Die Anforderung > ist jetzt, dass die Einträge nicht aus einer Datenbank (Server) kommen > sollen, sondern aus einer Datei, die als Ressource dem Projekt > hinzugefügt wurde und später mit kompiliert wird. > Welche Möglichkeiten bieten sich mir da? Ich dachte an eine einfache > txt-Datei, eher ungewöhnlich. Dann eher gängig: Ressourcendatei (Resx-Datei, die beim Neuhinzufügen eh schon auf "Buildvorgang: eingebettet" ist, wobei wichtig wäre, ob ein Lokalisierung/Globalisierung gemacht werden soll), oder XML-Datei. Natürlich auch viele andere Formate möglich, oder eben eine Klasse mit einer Auflistung nehmen. Ich selber halte solche Sachen ~gerne in einer Klasse. Man kann u.a. auch Intellisense mit XML-Kommentaren für die Member einfügen. ciao Frank |
|
#5
|
|
|
|
|
Hallo,
danke für die vielen Antworten. Derzeit ist keine Lokalisierung geplant, könnte aber in Zukunft ein Thema sein. Daher möchte ich mir natürlich nichts verbauen. Derzeit tendiere ich zu einer Ressourcendatei, doch fehlt mir da ein wenig die Erfahrung. Ich habe jetzt eine Recourcendatei mit dem Namen "ControlInhalten.resx" angelegt. Dort stehen folgende Infos drin. Name, Wert ------------------ combo1_1, "Manuel" combo1_2, "Manfred" combo1_3, "Michael" combo2_1; "Bayern" combo2_2; "Stuttgart" Ich kann im Quellcode nun mit der Eingabe von "ControlInhalten.xxx" den Wert von bestimmten Einträgen abfragen. Wie kann ich jedoch in einer schönen Schleife sämtliche Werte für die combobox1 (combo1) abfragen und der Combobox hinzufügen? Grüße Michael |
|
#6
|
|
|
|
|
Hallo Manuel,
> Ich habe jetzt eine Recourcendatei mit dem Namen "ControlInhalten.resx" > angelegt. Dort stehen folgende Infos drin. > Wie kann ich jedoch in einer schönen Schleife sämtliche Werte für die > combobox1 (combo1) abfragen und der Combobox hinzufügen? In deinem Beispiel etwas wie: private void Form1_Load(object sender, EventArgs e) { Assembly asm = Assembly.GetExecutingAssembly(); // string[] namen = asm.GetManifestResourceNames(); ResourceManager rm = new ResourceManager( this.GetType().Namespace + ".ControlInhalten", asm); var rs = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true); ResToCombo(rs, "combo1_", combo1); ResToCombo(rs, "combo2_", combo2); } private void ResToCombo(ResourceSet rs, string resBeginName, ComboBox combo) { foreach (DictionaryEntry de in rs) { string key = (string)de.Key; if (key.StartsWith(resBeginName)) combo.Items.Add(de.Value); } } ciao Frank |
|
#7
|
|
|
|
|
Vielen dank Frank!
hab die Methode in leicht umgeschriebener Form nun bei mir eingebaut. Funktioniert super. Ist dieser Lösungsweg auch halbwegs professionell oder würde jeder halbwegs geschulter Programmierer den Kopf schütteln? mal was nebenbei.... Wenn man diese Newsgroups länger verfolgt, wird man immer wieder auf den Namen Frank Dzaebel stoßen, wie er mit guten Ratschlägen oder Tipps jedem kostenlos weiterhilft. Dafür ein großes Dankeschön! "Frank Dzaebel" <Post> schrieb im Newsbeitrag news:1796 [..] |
|
#8
|
|
|
|
|
Hallo Manuel,
> [...] Funktioniert super. das freut mich. > Ist dieser Lösungsweg auch halbwegs professionell oder würde jeder > halbwegs geschulter Programmierer den Kopf schütteln? Wenn die Vorgabe ist, dass eine eigene Datei benutzt wird, die zum einen eingebettet ist und die ggf. später noch lokalisiert werden soll, ist das eine solide Lösung. Klar, bei Lokalisierung geht man ansonsten oft den Weg über Satelliten-DLL's, die dann zum Beispiel über die Language-Eigenschaft der Form manipuliert werden, sodass solch kleine Ressourcen~Mengen direkt über den Windows Forms Designer direkt in die Eigenschaften des Controls (hier ComboBox) eingegeben werden. Der Designer setzt das dann selbstständig in Code um, der (zum Beispiel über ApplyResources(...)) Dir das alles automatisch einfügt. Es sollte also schon einen Grund geben, warum diese (obigen) Vorgaben notwendig sind. Wenn dem aber so ist, so ist die Lösung schon ok. > mal was nebenbei.... > > Wenn man diese Newsgroups länger verfolgt, wird man immer wieder auf den > Namen Frank Dzaebel stoßen, wie er mit guten Ratschlägen oder Tipps > jedem kostenlos weiterhilft. Dafür ein großes Dankeschön! :-) ciao Frank |
|
|
| Ähnliche Themen | |
| [VB6] Best practise: Datensatzaggregierung und Anzeige Hallo, ein externes Programm schreibt andauernd jede Sekunde einen Float-Wert in eine/mehrere Datei(en). Diese Werte sollen als Graphen visualisiert werden, und zwar... |
|
| ISA 2004 / Best Practise Analyzer Hallo werte SBS 2003 R2 Kenner, ich habe den ISA-Server 2003 (SP 3 wurde auch installiert) und habe einige Problemchen, die mir der BEst Practice Analyzer zeigt. Anmerkung... |
|
| Mehrschichten - Best practise Hallo zusammen Ich bin auf der Suche nach einigen Vorschlägen wie eine Web-Basierende Mehrschichten (3-tier) Anwendung programmiert werden soll. Dabei versuche ich den... |
|
| best practise: servergespeicherte profiles hallo, möchte für einen sbs-2003-std-server mit fünf client-rechnern die profiles am server ablegen. in welchem verzeichnis am server sind nun die profiles am... |
|
|
Alle Zeitangaben in WEZ. Es ist jetzt 18:54 Uhr. | Privacy Policy
|