Entwickler-Ecke

WinForms - Switch Abfrage mit Listbox


27sharp - Fr 28.06.13 08:31
Titel: Switch Abfrage mit Listbox
Hallo Leute ,

ich war grade dabei ein Programm zu schreiben dabei bin ich auf ein Problem gestoßen:

Ich möchte aus einer listbox mit 114 Werten eine switch abfrage machen bei der betätigung der einzelnen Werte , doch gibt es keine Vereinfachung dafür ?

der Code :


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
int list = listBox1.SelectedIndex;

            switch (list)
            {

                case 0 :

                    1

                break;

                case 1:

                     2

                break;
       ....


So das geht jetzt so weiter bis zu der Zahl 114.

Vielen Dank im voraus.


Ralf Jansen - Fr 28.06.13 08:43

Passiert in jedem case Zweig was prinzipiel Unterschiedliches? Und was?
Die Anzahl Einträge ist so fix das man die 114 hart im Code festlegen könnte?


baumina - Fr 28.06.13 08:46

Die Frage ist, ob denn bei den 114 verschiedenen Auswahlmöglichkeiten jedesmal etwas total unterschiedliches passieren soll, oder etwas Vergleichbares. Wenn es sich z.B. um Zahlenwerte handelt, mit denen du rechnen willst, kannst auf das Switch verzichten und direkt mit dem Wert rechnen.


27sharp - Fr 28.06.13 08:49

Genau gesagt handelt es sich um Links die immer um eine Zahl erhöht werden:

bsp. : http://www.test.de/001 , http://www.test.de/002 .. und so weiter.

Also bei jedem auswälen einzelnen Werte in der Listbox sollen die Seiten geöffnet werden.


Th69 - Fr 28.06.13 09:02

Hallo 27sharp,

meinst du einfach

C#-Quelltext
1:
2:
int index = listBox1.SelectedIndex + 1;
string url = String.Format("www.test.de/{0}", index.ToString("N3"));

? So kannst du auf das ganze switch-case Konstrukt verzichten.


baumina - Fr 28.06.13 09:02

Ich kann kein .NET, aber es müsste ungefähr so gehen:

Quelltext
1:
Str = 'www.test.de/' + Listbox1.Text                    


Moderiert von user profile iconTh69: Code-Tags hinzugefügt


27sharp - Fr 28.06.13 09:14

Also irgendwie funktioniert das nicht.


Ralf Jansen - Fr 28.06.13 09:19

Und wie funktioniert es irgendwie nicht? Ohne Details ist dir kaum zu helfen.


27sharp - Fr 28.06.13 09:21

Also das ist der Alte Code :


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {



            int index = listBox1.SelectedIndex;

            switch (index)
            {
                case 0 :
                    axWindowsMediaPlayer1.URL = "www.test.de/001";
                    break;
                case 1 :
                    axWindowsMediaPlayer1.URL = "www.test.de/002";
                    break;
                    //..
                    //..
                    //..
                case 114 :
                    axWindowsMediaPlayer1.URL = "www.test.de/114";
                    break;
            }


Ich habe es gemacht wie Sie es mir gesagt haben doch dann wird die Seite garnicht aufgerufen.


baumina - Fr 28.06.13 09:29

Du zeigst uns jetzt aber deinen neuen Code schon noch?


27sharp - Fr 28.06.13 09:40

Sry , der neue Code :


C#-Quelltext
1:
2:
3:
4:
int index = listBox1.SelectedIndex + 1;
string url = String.Format("http://test.de/{0}", index.ToString("N3"));

axWindowsMediaPlayer1.URL = url;


Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.


27sharp - Fr 28.06.13 09:42

Ok , Problem gelöst:

Es Sollte so sein :

C#-Quelltext
1:
2:
3:
4:
int index = listBox1.SelectedIndex + 1;
string url = String.Format("http://test.de/{0}", index.ToString("D3"));

axWindowsMediaPlayer1.URL = url;


Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.


Th69 - Fr 28.06.13 10:47

Sorry, stimmt: "D3" statt "N3" (da bei N die Zahl die Anzahl der Nachkommastellen angibt).

Um ganz sicher zu gehen, sollte man die CultureInfo auf Invariant setzen:

C#-Quelltext
1:
2:
int index = listBox1.SelectedIndex + 1;
string url = String.Format("http://test.de/{0}", index.ToString("D3", CultureInfo.InvariantCulture));

(Nicht damit einem eine Ländereinstellung dazwischenfunkt, wobei "D" laut Der Dezimalformatbezeichner "D" [http://msdn.microsoft.com/de-de/library/dwhawy9k.aspx#DFormatString] aber die Ländereinstellung ignorieren sollte.)

P.S. Und bitte demnächst in Beiträgen nicht mehr plenken [http://de.wikipedia.org/wiki/Plenk].