Index
-
Hallo zusammen,
der Code zur Anzeige lautet bei mir:
fensterBilderschau ->Text = "Bilderschau - Bild " +listBox1->SelectedIndex +" von " +listBox1->Items->Count +" " +listBox1->SelectedItem;
Mein gesamter Code lautet:
private: System::Void buttonStarten_Click(System::Object^ sender, System::EventArgs^ e) { //befinden sich überhaupt Einträge in der Liste? //wenn nicht, erzeugen wir eine Meldung und verlassen //die Methode wieder if (listBox1 ->Items->Count == 0) { MessageBox::Show("Sie müssen erst Dateien auswählen!", "Fehler", MessageBoxButtons::OK, MessageBoxIcon::Error); return; } //ist kein Eintrag im Listenfeld markiert? //dann den ersten Eintrag markieren if (listBox1 ->SelectedIndex == -1) listBox1 ->SelectedIndex = 0; //ein neues Fenster für die Bilderschau erzeugen fensterBilderschau = gcnew formMax; //das erste Bild laden fensterBilderschau->bildLaden(listBox1 ->SelectedItem->ToString()); //den Titel des Formulars auf Bilderschau setzen fensterBilderschau ->Text = "Bilderschau - Bild " +listBox1->SelectedIndex +" von " +listBox1->Items->Count +" " +listBox1->SelectedItem; //das Systemmenü und das Schließen-Symbol ausblenden fensterBilderschau ->ControlBox = false; //das Formular anzeigen fensterBilderschau ->Show(); timer1 ->Start(); }
In der Methode des Timers gehe ich ähnlich vor:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { //ist der letzte Eintrag noch nicht erreicht? if (listBox1 ->SelectedIndex < listBox1 ->Items->Count-1) { //den nächsten Eintrag markieren listBox1 ->SelectedIndex++; //und das Bild laden fensterBilderschau ->bildLaden(listBox1->SelectedItem->ToString()); fensterBilderschau ->Text = "Bilderschau - Bild " +listBox1->SelectedIndex +" von " +listBox1->Items->Count +" " +listBox1->SelectedItem; //einen Sound aus der Systemsteuerung abspielen - hier für den Stern System::Media::SystemSounds::Asterisk->Play(); } //beim letzten Bild wieder aufräumen else { //die Markierungen löschen listBox1 ->SelectedIndex = -1; //den Timer anhalten timer1 ->Stop(); //das Fenster schließen fensterBilderschau ->Close(); } }
Aber auch ich habe das Problem, dass im Fenster Bild 0 von 3 steht.
Wie kann ich einen Focus auf das erste Bild setzen, damit die Anzeige Bild 1 von 3 lautet?Danke im Voraus
-
Hallo zusammen,
ich benötige dringend Hilfe von Euch, da ich kurz vorm Verzweifeln bin.
Ich habe keine Ahnung, wie ich den Text im Formular von Bild 0 von 3 auf Bild 1 von 3 ändern kann.HILFE
-
Schulaufgaben lösen hier wa, nee ich net...nicht mit uns...
Gruß, Knete
-
Hmm... schwere aufgabe.
0 + 1 = .... Ahhhh
1
-
0 + 1 = 1
.... mmmmhhhh wie konnte ich das bloß übersehenhabe aber keine Ahnung an welcher Stelle ich dies versuchen soll.
Eine Alternative habe ich bereits versucht:Int32 Index = listBox1->SelectedIndex; if (listBox1->SelectedIndex == 0) Index=+1;
und um den Titel im Formular entsprechend anzuzeigen:
fensterBilderschau ->Text = "Bilderschau - Bild " +Index +" von " +listBox1->Items->Count +" " +listBox1->SelectedItem;
Das klappt auch sehr gut - allerdings macht der Timer dann nicht mit.
Beim ersten Bild steht dann: Bild 1 von 3, beim zweiten Bild steht Bild 1 von 3 und erst beim dritten Bild fängt er an hochzuzählen und zeigt an: Bild 2 von 3.
Das ist also auch noch nicht die LösungDa ich mich, neben einer Vollbeschätigung, zu einem Studium entschlossen habe, bin ich halt manchmal auf Hilfe angewiesen. Es ist schon schwer, wenn man sich alles selbst beibringen muss.
Daher bin ich für Anregungen immer offen.
-
Du brauchst nicht mit if abfragen, da der Index immer um 1 weniger ist.
-
Sahandra schrieb:
Beim ersten Bild steht dann: Bild 1 von 3, beim zweiten Bild steht Bild 1 von 3 und erst beim dritten Bild fängt er an hochzuzählen und zeigt an: Bild 2 von 3.
Das ist also auch noch nicht die LösungDa ich mich, neben einer Vollbeschätigung, zu einem Studium entschlossen habe, bin ich halt manchmal auf Hilfe angewiesen.
Na, genau dafür ist die MSDN doch da:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindex.aspx
Gets or sets the zero-based index of the currently selected item in a ListBox.
Hätte viel Zeit gespart da mal nach zu lesen.
-
Hallo Knuddlbaer,
vielen Dank für den Link
Aber mit dem TopIndex habe ich es auch schon probiert; bin aber gescheitert.
Wahrscheinlich, weil ich ihn einfach an der falschen Stelle einsetze.
-
Klatsch den Code in den timer1_Tick, dann klappt das auch mit der Anzeige...
fensterBilderschau->Text="Bilderschau - Bild " + (listBoxAuswahl->SelectedIndex+1) + " von " + (listBoxAuswahl->Items->Count) + " \"" + (listBoxAuswahl->SelectedItem) +"\"";
Gruß, Doug_HH
-
VIELEN DANK an Doug_HH
Du hat meinen Sonntag gerettet !!!!