2016-09-05 11 views
0

У меня есть таймер. в моей форме по-прежнему можно открыть дочернее окно. Когда я открываю и закрываю это окно, таймер снова запускается. Как я могу продолжить работу с таймером при открытии и закрытии дочернего окна ??? Я очень надеюсь на вашу помощь! это мой таймер:Как я могу продолжить время таймера при открытии/закрытии дочернего окна

Private timer As DispatcherTimer 
Private CountUp As Integer 

Public Sub DispatcherTimerSetup() 

    timer = New DispatcherTimer() 
    timer.Interval = New TimeSpan(0, 0, 1) 
    AddHandler timer.Tick, AddressOf timer_Tick 
    timer.Start() 

End Sub 

Private Sub timer_Tick(sender As Object, e As Object) 

    CountUp += 1 
    Dim counter As TimeSpan 
    counter = TimeSpan.FromSeconds(CountUp) 
    txblCountdown.Text = counter.ToString("mm\:ss") 

End Sub 

дочернего окна:

Private Sub btnMapPoint_Click(sender As Object, e As RoutedEventArgs) 

    SaveControlValuesInObject() 

    Dim intIndex As Integer = CInt(sender.Name.Replace("btnMapPoint_", "")) 

    Frame.Navigate(GetType(Location)) 
    TryCast(Frame.Content, Location).InitForm_Observation(_myEventErist, intIndex, GetType(Event9900000)) 
    TryCast(Frame.Content, Location).IsChangeMapEnabled = False 
    TryCast(Frame.Content, Location).SetSelectedMap(DirectCast(cboMesspunkt.SelectedItem, SMS_KARTE)) 
End Sub 

С наилучшими пожеланиями, Полина

+0

Не могли бы вы показать код, который открывает дочернее окно? Я предполагаю, что дочернее окно повторно инициализируется каждый раз, когда вы его открываете. –

+0

Да, я добавил дочернее окно –

ответ

0

Frame.Navigate(GetType(Location)) инициализирует новый экземпляр Location страницы, так CountUp значение будет потеряно.

Вы можете сделать поле CountUp открытым и добавить другое поле в родительский объект, например, SavedCountUpValue. Затем используйте событие Location.Unloaded, чтобы сохранить CountUp значение в поле SavedCountUpValue.

В родительском объекте, в Location_Unloaded обработчика:

SavedCountUpValue = TryCast(Frame.Content, Location).CountUp 

Затем при инициализации нового объекта Location, восстановить CountUp значение.

В родительском объекте, в btnMapPoint_Click обработчика:

Frame.Navigate(GetType(Location)) 
... 
TryCast(Frame.Content, Location).CountUp = SavedCountUpValue