Opóźnienie (Timer?) i sprawdzenie czy znak jest liczbą

0

Witam!

Mam dwa problemy z którymi nie mogę dać sobie rady, a pewnie są banalne. Jak tutaj nie dostanę pomocy to już chyba nigdzie. Zacznę jak dla mnie od gorszej sprawy.

Mam program, który w pętli odczytuje kolejno wartości z tablicy. Gdy odczyta np liczbę "5" to chcę aby program zaczekał 5 sekund i ruszył dalej i wykonywał kolejne polecenia. Metoda sleep odpada. Kombinowałem z Timerem, ale nie mogę do niczego konkretnego dojść. Mam nadzieję, że wiadomo o co mi chodzi. :)

 
 for (int i = 0; i < 100; i++)
            {
                if (tablica[i] == "1||2||3||4||5")
                {
                   textBox1.Text = "W tablicy jest liczba" +tablica[i];
                    
                   //TUTAJ CHCĘ ABY PROGRAM ODCZEKAŁ TĄ ILOŚĆ SEKUND I PO UPŁYWIE TYCH SEKUND CO ODCZYTAŁ Z TABLICY WYPISAŁ TEKST DO textBoxa (linia niżej) I WYKONYWAŁ KOLEJNE ITERACJE 

                   textBox3.Text = "Minęło 5 sekund";
                   
                    }
                }

Drugi problem wygląda tak. Chcę aby instrukcja warunkowa sprawdzała mi czy wartość w tablicy typu string jest liczbą.

 if (tablica[i + 1] == i tutaj nie wiem co ) 

Pozdrawiam i liczę na pomoc. :)

1

Jestem raczej początkujący, więc postaram się pomóc co do moich możliwości. Mogę się mylić :) .
Nie wiem, czy chodzi nam o tą samą metodę, ale System.Threading.Thread.Sleep(liczba_milisekund) powinno dać radę.

if (tablica[i] == "1||2||3||4||5") 

Nie wiem, czy nie powinno być:

if(tablica[i]=="1"||tablica[i]=="2"||tablica[i]=="3"||tablica[i]=="4"||tablica[i]=="5") 

Drugi problem wygląda tak. Chcę aby instrukcja warunkowa sprawdzała mi czy wartość w tablicy typu string jest liczbą.

 if (tablica[i + 1] == i tutaj nie wiem co )  

Wydaje mi się, że tak po prostu stringa do inta nie porównasz.
Ale i.ToString() chyba zadziała:

 if (tablica[i + 1] == i.ToString()) 

Pamiętaj, że to porównuje tylko i+1 do i, a z drugiego problemu wywnioskowałem, że chodzi ci o to, czy to jakakolwiek liczba.
Wtedy wydaje mi się, że trzeba dać sprawdzany zakres liczb i w pętlę :).

Jeżeli chodziło Ci o coś innego, napisz.

1
szymon1234513 napisał(a):

Drugi problem wygląda tak. Chcę aby instrukcja warunkowa sprawdzała mi czy wartość w tablicy typu string jest liczbą.

 if (tablica[i + 1] == i tutaj nie wiem co ) 

Np. tak:

 
int temp;
if (int.TryParse(tablica[i+1], out temp))
0

Dzięki za odpowiedzi. Z metodą sleep dzieją się jakieś dziwne rzeczy. Pierwsze co to program wykonuje tą metodę, nie wiem dlaczego.

 
            textBox1.Text = "xxx";
            System.Threading.Thread.Sleep(5000);
            textBox2.Text = "yyy";

Teoretycznie powinien się wyświetlić w textBox1 "xxx" później po 5 sekundach "yyy" w textBox2. Jednak tak nie jest i oba napisy wyskakują po upływie 5 sekund w tym samym czasie.

1

Jest to widoczne jakby oba textboxy wypełniły się po 5 sekundach.

Zamiast System.Threading.Thread.Sleep(5000)

Mógłbyś skorzystać z async/await:
await Task.Delay(5000)

Deklaracja przykładowej metody click dla buttona (zwróć uwagę na słowo kluczowe async):

private async void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "xxx";
            await Task.Delay(5000);
            textBox2.Text = "yyy";
        }
0

Mikey wielkie, wielkie dzięki! Właśnie o to mi chodziło. Działa tak jak powinno! :)

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