Autor Beitrag
P584
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 15:58 
Nächstes Problem. Und sorry, mir ist kein blöderer Titel eingefallen :D

Also ich hab folgendes mir ausgedacht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
   string converter1 = "";
            string converter2 = "";
            string converter3 = "";
            string converter4 = "";
            string converter5 = "";
            string converter6 = "";
            string converter7 = "";
            string converter8 = "";
            string converter9 = "";
            string converter10 = "";
            string converter11 = "";
            string converter12 = "";
            string converter13 = "";
            string converter14 = "";
            string converter15 = "";
            string converter16 = "";
            string converter17 = "";

            for (int i = 1; i > 10; i++)
            {if (cbb_[i].SelectedItem.ToString() == "lol")
            { converter[i] = "laughing out loud"; }
            }


ich habe 17 comboboxen (cbb_1 bis cbb_17). Bei denen kann man unter anderem "lol" auswählen. Wenn dann beispielsweise bei cbb_5 "lol" ausgewählt wird, soll eine Variable converter5 den Wert "laughing out loud" annehmen.

Soweit, hoffe ich, verständlich.

1. Wie kann ich das dann individuell prüfen, ohne für jede Combobox eine eigene if-Abfrage zu nehmen? Ich hab mir gedacht, ich mache das so, wie oben im Code gezeigt wird. Nur weiß ich nicht, wie eine Variable bzw. die jeweilige Combobox einen individuellen Namen annehmen kann. [i] ist schon mal falsch^^. Es soll nur aufzeigen, wie ich mir das gedacht habe

2. Gibts theroetisch eine noch einfachere Lösung für meine oben genannte Aufgabenstellung?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 21.07.10 16:13 
Hallo,

du kannst eine Collection (z.B. Liste) von Strings nehmen. Die Collection muss unterstützen, dass sie auf ihre Element per Index zugreifen kannst (was die List macht).

Dementsprechend würdest du es so machen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
// Liste (von strings) erstellen
List<string> converter = new List<string>();

// Liste füllen (evtl. mit einer Schleife)
converter.Add("");
converter.Add("");
converter.Add("");
...


// speichern
converter[i] = "laughing out loud";


Gruß

Für diesen Beitrag haben gedankt: P584
P584 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 17:15 
Und was ist dann mit der Combobox? Weil die jeweilige cbb hängt ja mit dem jeweiligen string zusammen.

wenn bei cbb_14 dies und das steht, dann nimmt converter14 einen bestimmten Wert an.

Aber das mit der List klappt immerhin schonmal *THUMBS UP*, nur geht mein Vorhaben halt nicht, wenn die cbb da nicht mitzieht^^
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 21.07.10 17:23 
So wie du deine strings in einer List<string> halten kannst, kannst du genauso deine Comboboxen in einer List<Combobox> halten und dann per Index darauf zugreifen.
P584 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 17:47 
Ok. Aber die Comboboxen existieren ja im Gegensatz zu den Variablen "converter" bereits. Darüber hinaus wird mit den cbb's weiter oben im Quelltext schon gearbeitet.

Wie schreibe ich es dann?
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Mi 21.07.10 18:06 
Ich nehme an, dass du die Comboboxen via Designer (also mittles Drag&Drop) erstellt hast.

Wenn du dir die Designer Datei (<FormName>.Designer.cs) ansieht wirst du merken, dass der Designer alle Controls automatisch einer Collection namens this.Controls hinzufügt.

Diese Collection kannst du jetzt auf ein bestimmtes Control durchsuchen. z.B. so:

ausblenden C#-Quelltext
1:
this.Controls.Find("cbb_1",false).First()					


Das liefert dir das Control mit dem Namen "cbb_1".


mfg Flitzs
P584 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 18:15 
Hmm... und was bringt mir das dann in meinem konkreten Fall? Könntest du evtl. etwas mehr Code liefern, wie ich das handhaben muss, um das von mir gewünschte zu erreichen =) ?
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Mi 21.07.10 19:09 
user profile iconP584 hat folgendes geschrieben Zum zitierten Posting springen:
Hmm... und was bringt mir das dann in meinem konkreten Fall? Könntest du evtl. etwas mehr Code liefern, wie ich das handhaben muss, um das von mir gewünschte zu erreichen =) ?


Damit kannst du in einer Schleife auf die Comboboxen zugreifen.
Ungefähr so könnte dein Problem gelöst werden:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            int totalBoxes = 17;
            string boxesPrefix = "cbb_";
            string[] converters = new string[totalBoxes];

            for (int i = 0; i < totalBoxes; ++i)
            {
                var cbox = this.Controls.Find(boxesPrefix + (i + 1).ToString(), false).First() as ComboBox;
                //Vergleichen des Textes und zuweisen des Converters
            }


lg Flitzs

Für diesen Beitrag haben gedankt: P584
P584 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 20:02 
Danke erstmal @Flitzs

..jedoch:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
            int totalBoxes = 17;
            string boxesPrefix = "cbb_";
            string[] converter = new string[totalBoxes];

            for (int i = 0; i < totalBoxes; ++i)
            {
                var cbox = this.Controls.Find(boxesPrefix + (i + 1).ToString(), false).First() as ComboBox;
                if (cbb_[i].SelectedItem.ToString() == "lol")
            { converter[i] = "laughing out loud"; }
            }

            tb_ausgabe.Text = converter1 + converter2 + converter3;


funktioniert nicht... die Ausgabe hab ich gemacht um zu überprüfen ob das klappt, aber die Variablen "sind im aktuellen Kontext nicht vorhanden". Ja, ich gebe zu, dass ich nicht mehr durchblicke :D
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Mi 21.07.10 20:09 
Wir haben die einzelnen Variablen doch durch ein Array ersetzt, daher greifst du nun über das Array auf die einzelnen Werte zu.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
            int totalBoxes = 17;
            string boxesPrefix = "cbb_";
            string[] converter = new string[totalBoxes];

            for (int i = 0; i < totalBoxes; ++i)
            {
               var cbox = this.Controls.Find(boxesPrefix + (i + 1).ToString(), false).First() as ComboBox;                
                if(cbox.SelectedItem != null)
                    if(cbox.SelectedItem.ToString() == "lol")
                        converter[i] = "laughing out loud"
            }
            tb_ausgabe.Text = converter[0] + converter[1] + converter[2];

Für diesen Beitrag haben gedankt: P584
P584 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 21.07.10 20:38 
Heureka :-D:-D

funzt jetzt alles, besten Dank.

...man sieht sich in nicht all zu langer Zeit mit dem nächsten Problem xD