Nieprawidłowe działanie List.

0

Mam zmienną, której wartość na początku ustawiona jest -1.

zmienna=-1

Teraz przedstawię dwie metody:

 
        //metoda wyświetlająca w funkcji wprowadzenie
        public void wyświetlDaneWprowadzenie(List<string> słowaPl, List<string> słowaAng, int index)
        {
            try
            {
                labelSłowoAng.Text = słowaAng[index];
                labelSłowoPL.Text = słowaPl[index];
            }
            catch(Exception)
            {
                MessageBox.Show("Wystąpił błąd podczas wyświetlania danych. Upewnij się czy wybrałeś bazę. ","Błąd aplikacji");
            }
        }
        //metoda sprawdzająca czy to już wszystkie słowa
        public void sprawdzCzyWszystkie(List<string> słowaPl, List<string> słowaAng, int index)
        {
            index = index - 1;
            if (index >= słowaPl.Count-1 || index >= słowaAng.Count-1)
            {
                j = -1;
                tlIndex = -1;
                timer1.Stop();
                timer1.Enabled = false;
                zmiennaAudio = -1;
                MessageBox.Show("To już wszystkie słowa z tego działu. Możesz wybrać kojeną bazę i kliknąć start.","Komunikat");
                
               
            }
            
        }
 
 wyświetlDaneWprowadzenie(listaPl, listaAng, zmienna);  //wyświetlamy dane
 sprawdzCzyWszystkie(listaPl, listaAng, zmienna);//sprawdzymy czy wszystkie słowa zostały zaprezentowane

Wiem, że w liście są trzy słowa.
Teraz gdy usunę z metody sprawdzCzyWszystkie index = index - 1 to wtedy komunikat: "To już wszystkie słowa z tego działu. Możesz wybrać kojeną bazę i kliknąć start.","Komunikat" pojawia się o jedno słowa za wcześnie." Gdy zostawię index=index-1, wyświetlają się słowa dobrze, ale znowu wtedy pojawia się komunikat: Wystąpił błąd podczas wyświetlania danych. Upewnij się czy wybrałeś bazę. ","Błąd aplikacji"(tego nie powinno być) a następnie To już wszystkie słowa z tego działu. Możesz wybrać kojeną(a ten jest prawidłowy) bazę i kliknąć start.","Komunikat
Kliknięcie na przycisk zwiększa wartość zmiennej, zmienna++. Mam jeszcze jedno pytanie, w List index jest od zera, a więc jak prawidłowo wyświetlić w labelu ile jest wszystkich słów w liście, bo lista.Count+1 nie działa. Proszę o pomoc. Podam link do programu, jeśli znalazł by się ktoś chętny i chciał dokładniej zobaczyć o co mi chodzi http://wyslijto.pl/plik/7n5n3ojxwt. Wybieramy np. bazę owoce.

0

Mam pytanie. W C# można używać polskich znaków jako nazwy zmiennych/obiektów??

1
gienek napisał(a)

Mam pytanie. W C# można używać polskich znaków jako nazwy zmiennych/obiektów??

Można. W zasadzie jakichkolwiek innych, wliczając w to azjatyckie, także. Choć zazwyczaj się tego nie robi.

0

Na początku indeks ma być 0 i żadnych minusów.

0

_13th_Dragon tak wiem, że prawidłowy index 0.
Wywołuje te metody dopiero gdy użytkownik kliknie przycisk. A pierwszym zadaniem przycisku jest:
zmienna++;
czyli teraz zmienna=0 i wywoła pierwsze słowo z listy lista[0] będzie.

0

Tak jak napisał _13th_Dragon nie możesz odwoływać się do elementów kolekcji o ujemnych indeksach. Nie ma z tym co dyskutować i nie masz na to żadnego wpływu.

 
index = -1;
labelSłowoAng.Text = słowaAng[index]; // wyskoczy IndexOutOfRangeException
labelSłowoPL.Text = słowaPl[index];
timer1.Stop();
timer1.Enabled = false;

Wiesz co robi metoda Stop timera? Ustawia Enabled na false. ;]

Wydaje mi się, że jeśli chcesz zrobić słownik, to powinieneś w tym celu użyć struktury danych ypu słownik (Dictionary) a nie dwóch list. Zaoszczędziłoby Ci to sporo pracy.

marcin_gc napisał(a)

Podam link do programu, jeśli znalazł by się ktoś chętny i chciał dokładniej zobaczyć o co mi chodzi http://wyslijto.pl/plik/7n5n3ojxwt.

Jeśli chcesz, żebyśmy ocenili Twój gotowy program, to wrzuć go do działu "Oceny i recenzje". Tutaj nikt go nie zauważy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1