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

0

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

        //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:

        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:

       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.

       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.

        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];


        } 
0

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

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ć?

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.

0

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

0

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

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            prawidlowaOdpowiedzPltoAng = linkLabel1.Text;
            sprawdzCzyWybranoDobrePltoAng(listaAng, tlIndex, label20);
            
        }
0

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

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...

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