Metody dynamicznie dodanych Timerów

0

Witam,

Piszę program, który ma robić krótką symulację. Do formy dynamicznie dodawane są TextBoxy, które następnie będą poruszały się
po formie wg ustalonej trasy. Chciałbym jednak aby każdy mógł poruszać się z inna prędkością. Wymyśliłem sobie, że z każdym textboxem będę również dynamicznie dodawał do niego Timer (mam tablicę dynamicznie dodanych Textboxów i tablicę timerów).
Jak teraz dodać metodę OnTick dla każdego Timera i oczywiście kod w każdej będzie troszkę inny?
Jest możliwe zrobienie tego dynamicznie, czy mogę tylko dodać wykonanie już istniejącej w kodzie metody??
Proszę o pomoc, Jestem nowicjusze i uczę się na konkretnych problemach w mojej aplikacji.
Dzięki
Kudlatyk

0

Jak dotąd nie było żadnej odpowiedzi, więc się podzielę moimi aktualnymi próbami.
Dynamicznie dodaje tyle Timerów co poruszających się Textboxów. Jako metodę wywoływaną po starcie wszystkich timerów daję

Zegar.Tick += new EventHandler(Zegar_Tick);

Następnie w metodzie Zegar_Tick wykorzystuję sendera żeby sprawdzić, który aktualnie zegar Ticka.
Ze względu, że nie mogę nadać Timerowi Name przypisałem mu nazwę w Tagu. Za pomocą tej nazwy identyfikuję, który Timer Ticka i odpowiednio poruszany
jest konkretny Textbox o odpowiedniej nazwie.
Cały czas walczę z tym kodem więc nie wiem czy to się do końca uda. Póki co coś tam działa, ale jeszcze bez większych sukcesów.
Ze względu na fakt iż nie umiem programować proszę o jakieś sugestie czy ten trop może być dobrą drogą???
Pozdrawiam
Kudlatyk

0

A może zrobić jeden Timer, sterujący wszystkimi TextBoxami? A TextBoxy powiązać z ich prędkościami, np. przy użyciu takiej klasy:

class TextBoxMoveInfo
{
    public TextBox Box { get; set;}
    public int Speed { get; set;}
}

Wówczas:

  1. Przy dynamicznym dodawaniu TextBoxa od razu tworzysz obiekt TextBoxMoveInfo, ustawiasz mu właściwość Box na tego TextBoxa i jakąś prędkość.
  2. Wszystkie te obiekty trzymasz w polu formatki typu List<TextBoxMoveInfo>.
  3. W timer_Tick idziesz w pętli po tej liście, pobierasz Box.Location i zmieniasz według określonej trasy z uwzględnieniem wartości Speed.

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