Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 28
1

При каждом новом нажатии кнопки удалить старый таймер и создать новый

20.05.2014, 01:10. Показов 1122. Ответов 4
Метки нет (Все метки)

При каждом новом нажатии запускает новый таймер. Как его заставить отключать и уничтожать старый не понятно((
Как сделать, правильно?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub MenuItem2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MenuItem2.Click
        'Создаем таймер
        Dim Timer = New System.Windows.Threading.DispatcherTimer()
 
        ' Прописываем процедуру события по завершению интервала таймера
        AddHandler Timer.Tick, AddressOf Timer_Tick
 
        Timer.Interval = New TimeSpan(0, 0, st) 'Задаем интервал в  секундах
        Timer.Start() 'запускаем таймер
        ik = 0 'устанваливаем счетчик картинок в списке в 0
 
    End Sub
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
 Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
        Dim n As Integer = Listimage.Count - 1 'кол-во элементов в списке картинок
        If n <= 0 Then  ' Если в списке пусто - ничего не делаем
            Exit Sub
        End If
        'Помещаем в имеджбокс картинку
        Image1.Source = Listimage.Item(ik)
        ik = ik + 1
        If ik > n Then 'Если прошли по всему списку - возварщаемся к началу
            ik = 0
        End If
 
    End Sub
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2014, 01:10
Ответы с готовыми решениями:

Unity 3D (nGUI). Как создать новый динамичный лейбл при нажатии кнопки?
Есть такая вот штука: void OnClick () { // присваиваем значениям val1 и val2 то, что...

При каждом новом нажатии значение увеличивалось бы на 1
Всем привет. Очень буду благодарен за помощь. &lt;?php if(isset($_GET)){ $id = $_GET;...

Как удалить старый сайт и создать новый по тому же адресу
Я еще новенький, у меня есть вопрос, ответ на который нигде не могу найти. Есть старый сайт, не...

Как создать новый объект добавить в другой и не удалить старый с таким же названием?
Как создать новый объект добавить в другой и не удалить старый с таким же названием? Строка 23 я...

4
Строитель
830 / 513 / 177
Регистрация: 01.04.2014
Сообщений: 557
Записей в блоге: 5
20.05.2014, 04:32 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

пример с обычным таймером
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Static oldTimer As Timer = Nothing 'здесь будет хранится предыдущий таймер
        If Not oldTimer Is Nothing Then 'проверяем пуста ли у нас переменная oldTimer 
            oldTimer.Dispose() 'если нет, то удаляем предыдущий таймер
        End If
        Dim newTimer As New Timer 'создаём таймер
        AddHandler newTimer.Tick, AddressOf Timer_Tick
        newTimer.Start() 'запускаем
        oldTimer = newTimer 'устанавливаем переменную newTimer к oldTimer
    End Sub
0
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 83
20.05.2014, 09:52 3
"Обычный таймер" это какой?
Пишет тип Timer не определен и ниодин из вариантов, предположенных системой не подходит ((

Imports System.Timers
для строчки
AddHandler newTimer.Tick, AddressOf Timer_Tick
пишет:
Ошибка 1 "Tick" не является событием в "System.Timers.Timer".
0
Строитель
830 / 513 / 177
Регистрация: 01.04.2014
Сообщений: 557
Записей в блоге: 5
20.05.2014, 10:05 4
под обычным таймером я имею виду System.Windows.Forms.Timer
0
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 83
20.05.2014, 10:52 5
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Public Sub MenuItem2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MenuItem2.Click
 
        Static Dim oldTimer As System.Windows.Threading.DispatcherTimer = Nothing 'здесь будет хранится предыдущий таймер
        If Not oldTimer Is Nothing Then 'проверяем пуста ли у нас переменная oldTimer 
            oldTimer.Stop()
        End If
        Dim newTimer As New System.Windows.Threading.DispatcherTimer 'создаём таймер
        ' Прописываем процедуру события по завершению интервала таймера
        AddHandler newTimer.Tick, AddressOf Timer_Tick
        newTimer.Interval = New TimeSpan(0, 0, st) 'Задаем интервал в  секундах
        newTimer.Start() 'запускаем
        oldTimer = newTimer 'устанавливаем переменную newTimer к oldTimer
        ik = 0 'устанваливаем счетчик картинок в списке в 0
 
    End Sub
Вот так работает.
Nord790, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2014, 10:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

При нажатии кнопки на Form1 запустить таймер на Form2
На Form1 кнопка нужно чтоб при её нажатии открывалась Form2 и на Form2 запускался таймер и...

Как сделать, чтобы при первом нажатии кнопки таймер запускался а при втором останавливался
Подскажите пожалуста как зделать чтобы при первом нажатии кнопки таймер запускался а при втором...

Уменьшать переменную при каждом нажатии кнопки
Как можно уменьшать переменную при каждом нажатии кнопки? При этом не использовать Java и...

Увеличение числа на +1 при каждом нажатии кнопки
Здраствуйте. Есть кнопка котррую нажимаю и должно увеличивать каждый раз число на 1. Тоесть есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.