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ß übersehen 🙂

    habe 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ösung 😞

    Da 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ösung 😞

    Da 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 !!!!

    😃 😃 😃 😃 😃 😃


Anmelden zum Antworten