Вопрос № 121734: Уважаемые эксперты!
У меня такой вопрос: как назначить одному событию два разных обработчика этого события. Например, у меня есть кнопка "Старт". После нажатия на нее запускается один обработчик, и надпись "Старт" заменяется н...
Вопрос № 121.734
Уважаемые эксперты!
У меня такой вопрос: как назначить одному событию два разных обработчика этого события. Например, у меня есть кнопка "Старт". После нажатия на нее запускается один обработчик, и надпись "Старт" заменяется на "Пауза". Как заменить обработчик, чтобы при следующем нажатии уже выполнялось действие соответствующее "Паузе" Язык программирования Visual Basic 2008
Отвечает: AlexanderZh
Здравствуйте, Витер Александр Анатольевич!
Все очень просто: внутри обработчика достаточно объявить статическую переменную-флаг (ее значение не будет сбрасыватся после выхода из процедуры) и использовать конструкцию If ... Then ... Else ... EndIF
Ответ отправил: AlexanderZh (статус: Практикант)
Ответ отправлен: 05.02.2008, 15:23 Оценка за ответ: 4 Комментарий оценки: Все правильно, но очень хочется использовать два обработчика
Отвечает: Черников Игорь Владимирович
Здравствуйте, Витер Александр Анатольевич!
Я когда то делал так:
Private Sub StartBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartBtn.Click
If StartBtn.Text = "&Пауза" Then
StartBtn.Text = "&Старт"
***
Else
StartBtn.Text = "&Пауза"
ClearBtn.Enabled = True
Timer1.Enabled = True
Timer1.Tag = 1
display = ""
End If
End Sub
Удачи!
--------- От каждого по способностям, каждому по труду
Отвечает: HookEst
Здравствуйте, Витер Александр Анатольевич!
Раз вам так надо, то в VB.Net это делается достаточно просто, используйте AddHandler и RemoveHandler:
Private Sub StartClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox("start")
Button1.Text = "Stop"
RemoveHandler Button1.Click, AddressOf StartClick
AddHandler Button1.Click, AddressOf StopClick
End Sub
Private Sub StopClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("stop")
Button1.Text = "Start"
RemoveHandler Button1.Click, AddressOf StopClick
AddHandler Button1.Click, AddressOf StartClick
End Sub
обратите внимание, Handles стоит только после одной Sub - она и будет вызываться в первый раз. Можно нигде не ставить, а вызвать AddHandler, например, при загрузке формы.
Успехов.
Ответ отправил: HookEst (статус: Практикант)
Ответ отправлен: 07.02.2008, 08:48 Оценка за ответ: 5