Witam
Jak mogę w WindowsFormsApplication wykonać operację, w której program bedzie losował czas z zakresu np. 1-30sekund i po wylosowanym czasie wyświetli losowe okno dialogowe. Zapętlam się w randomach, ale nic dobrego z tego nie wynika. Jestem początkująca, więc proszę o wyrozumiałość.
Ma to działać przykładowo tak: mamy okna dialogowe 1, 2 i 3. program losuje, że np po 16 sekundach od kliknięcia buttonu "start" pojawi się okno dialogowe nr 2. Następnie po np 23 sekundach wyświetli się okno dialogowe nr 1 itd...
Z góry dziękuję za pomoc
Losowanie czasu z danego zakresu
Wątek przeniesiony 2016-11-04 14:29 z C# i .NET przez ŁF.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
- Rejestracja: dni
- Ostatnio: dni
- Postów: 597
Losujesz liczbę z zakresu. Następnie wykorzystujesz klasę Timer - 4programmers.net/C_sharp/Timery. Ustawiasz sobie jako interwał wartość tej liczby. Przypiszesz odpowiednią metodę, która jest wykonywana co ten interwał. W niej piszesz kod do otworzenia okna dialogowego. Zatrzymujesz timer.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Bytom
- Postów: 81
Tak jak kolega wyżej napisał wykorzystaj timer (poniżej info z MSDN jak to działa):
https://msdn.microsoft.com/pl-pl/library/system.timers.timer(v=vs.110).aspx
no i Random, również link do MSDN, można się dowiedzieć ciekawych rzeczy:
https://msdn.microsoft.com/pl-pl/library/2dx6wyd4(v=vs.110).aspx
Powodzenia :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
Dziękuję pięknie! Zaczynam więc działać i w razie co nie omieszkam zapytać ponownie ;)
Pozdrawiam!
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
problem 1:
Random random = new Random();
int losowa = new Random().Next(30);
jak zrobić żeby losowało od 1 a nie od 0?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3257
W C# mozna dwa parametry podac: https://msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.110).aspx
W innych jezykach dodaje sie 1 do wyniku czyli mialbys: Random.next(31)+1 Random.next(30)+1 bo Random dziala na przedziale <0,podanaLiczba)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Bytom
- Postów: 81
Ponownie odeśle do MSDN https://msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.110).aspx
Metoda Next przyjmuje dwa parametry:
public virtual int Next(
int minValue,
int maxValue
)
Domyślam się, że jeśli podasz tylko jedną wartość, w twoim przypadku 30 to kompilator przyjmie za wartość minimalną, wartość domyślną dla typu int32, czyli 0.