Usuwanie kontrolek, stworzonych dynamicznie

0

witam. tworze dynamicznie Image w jednym zdarzeniu, a w drugim chciałbym go usunąć ( w tym przypadku w timerze). Mam taki Kod:

private void wait()
        {
            System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();
            dt.Interval = new TimeSpan(0, 0, 0, 0, 1500); // 1500 Milliseconds
            dt.Tick += new EventHandler(dt_Tick);
            Image waiting = new Image();
            waiting.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("wait.png");
            waiting.Margin = new Thickness(0, -880, 0, 0);
            waiting.HorizontalAlignment = HorizontalAlignment.Left;
            stack.Children.Add(waiting);
            
            dt.Start();
        }
        void dt_Tick(object sender, EventArgs e)
        {
            stack.Children.Remove(waiting);       //tutaj blad
        } 

Wyskakuje mi blad:

The name 'waiting' does not exist in the current context
Zdaje sobie sprawe, ze rozwiazanie zapewne jest banalne, ale mecze sie z tym i nie moge sobie poradzic. dodam ze w c# jstem nowy.

0

Twoja zmienna "waiting" istnieje tylko w metodzie wait(), dlatego dt_Tick jej nie widzi.

Dodaj zmienną waiting jako pole klasy Form1 czy w czymkolwiek wait() i dt_Tick() są zawarte, wtedy będą widoczne dla obu metod.

0

dzieki za odpowiedz, moze bede upierdliwy, ale moglbys mi powiedziec jak to zrobic ?

0

Albo podaj obiekt waiting jako parametr procedury dt_Tick i na jego podstawie usuń obiekt;

Właściwie powinieneneś tak usadzić ten obiekt, by był widoczy dla obu metod bez kombinowania, czyli tak jak wspomniał @Ktos - ustaw je jako pole klasy;

siszarpagain napisał(a)

ale moglbys mi powiedziec jak to zrobic ?

Nikt nie będzie Cię tutaj uczył podstaw programowania - do tego masz odpowiednie działy w tym serwicie;

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