Nieprawidłowe działanie metody, po kolejnym jej użyciu.

Nieprawidłowe działanie metody, po kolejnym jej użyciu.
N1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
0

Mam formę na niej przycisk start i dalej. Teraz metoda sprawdzająca odpowiedź:

Kopiuj
        //metoda sprawdzająca czy dobrze
        private void sprawdzCzyWybranoDobrePltoAng(LinkLabel linkLabelUzytkownika, Label czyDobrze, List<string> slowa, int indexCorrect)
        {
            if (linkLabelUzytkownika.Text == slowa[indexCorrect])
            {
                czyDobrze.Text = "Dobrze";
            }
            else
            {
                czyDobrze.Text = "Źle";
            }
        }
 

Teraz to co jest pod przyciskiem start:

Kopiuj
        private void button9_Click(object sender, EventArgs e)
        {
            tlIndex = 0;
            label22.Text = listaPl[tlIndex];
            wyswietlWyborPltoAng(listaAng, listaPl, tlIndex);
        }
 

W przycisku start działa wszystko, to znaczy jak wybiorę złą odpowiedź to pokaże napis źle, jak wybiorę dobrą pojawi się napis dobrze.
Pod przyciskiem Dalej:

Kopiuj
       private void button10_Click(object sender, EventArgs e)
        {
            tlIndex+=1;
            label22.Text = listaPl[tlIndex];
            label20.Text = null;
            wyswietlWyborPltoAng(listaAng, listaPl, tlIndex);
            
            
        }
 

Kod zdarzenie po kliknięciu na linkLabel(mam cztery linkLabele) i pod każdym to samo zdarzenie.

Kopiuj
       private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            sprawdzCzyWybranoDobrePltoAng(linkLabel1, label20,listaAng, tlIndex);
        }

Po kliknięciu przycisku dalej, i potem po wybraniu odpowiedzi nawet prawidłowej zawsze pojawia się napis źle.

Kopiuj
        private void wyswietlWyborPltoAng(List<string> slowaAng, List<string> slowaPl, int zmiennaIndex)
        {
            /*//losujemy indexy labeli
            Random losuj = new Random();
            //int[] Liczby = new int[4];
            for (int i = 0; i < 4; ++i)
                Liczby[i] = i;
            for (int i = 3; i > 0; --i)
            {
                int p = losuj.Next(0, i);
                if (i != p)
                {
                    int t = Liczby[i]; Liczby[i] = Liczby[p]; Liczby[p] = t;
                }
            }*/
            //losoujemy teraz trzy odpowiedzi.....................//////////////////////
            int[] wylosowaneLiczby = new int[slowaAng.Count];
            int ile = slowaAng.Count;
            for (int i = 0; i < slowaAng.Count; i++)
            {
                wylosowaneLiczby[i] = i;
            }
            
            for (int i = 0; i < slowaAng.Count; i++)
            {
                wylosowaneLiczby[i] = i;
            }
            Random losujOdpowiedzi = new Random();

            for (int i = 0; i < 3; ++i)
                wylosowaneLiczby[i] = i;

            for (int i = ile - 1; i > ile - 4; --i)
            {
                int p = losujOdpowiedzi.Next(0, i);
                if (i != p)
                {
                    int t = wylosowaneLiczby[i]; wylosowaneLiczby[i] = wylosowaneLiczby[p]; wylosowaneLiczby[p] = t;
                }
            }
            listaLinkLabeliPltoAng[0].Text=slowaAng[wylosowaneLiczby[0]];
            listaLinkLabeliPltoAng[1].Text = slowaAng[wylosowaneLiczby[1]];
            listaLinkLabeliPltoAng[2].Text = slowaAng[wylosowaneLiczby[2]];
            listaLinkLabeliPltoAng[3].Text = slowaAng[zmiennaIndex];


        } 
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Uruchom pod debugierem i zobacz który parametr się zmienia przy drugim wywołaniu. Jak znajdziesz który to szukaj gdzie go zmieniasz.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Kod zdarzenie po kliknięciu na linkLabel(mam cztery linkLabele) i pod każdym to samo zdarzenie.
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
sprawdzCzyWybranoDobrePltoAng(linkLabel1, label20,listaAng, tlIndex);
}

Mówisz że cztery labele, ale potem zawsze przekazujesz linkLabel1 jako parametr, niezależnie od tego, który kliknięto. Na pewno tak miało to działać?

N1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
0

Azarien

Mówisz że cztery labele, ale potem zawsze przekazujesz linkLabel1 jako parametr, niezależnie od tego, który kliknięto. Na pewno tak miało to działać?
Masz rację poprawiłem to.

N1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 69
0

Wielkie dzięki Gregory_Scot za darmowe rozwiązanie problemu.

Gregory_Scot
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 91
0

Bład jest w funkcji (literówka):

Kopiuj
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            prawidlowaOdpowiedzPltoAng = linkLabel1.Text;
            sprawdzCzyWybranoDobrePltoAng(listaAng, tlIndex, label20);
            
        }
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Jakim cudem podziękowanie jest przed postem wyjaśniającym? To powinno być karane.

Gregory_Scot
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 91
0
somekind napisał(a)

Jakim cudem podziękowanie jest przed postem wyjaśniającym? To powinno być karane.

TO NIE CUD ... takie rzyczy to tylko w ERZE ...

a ja pomogłem koledze przez gg i e-maili ... on napisał podziękowanie a ja w tym samym czasie (zaraz po nim, nie widząc jego wpisu) dodałem komentarz aby się już nikt nie głowił nad problemem...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.