Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 704
от 11.02.2008, 06:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 275, Экспертов: 40
В номере:Вопросов: 1, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 121734: Уважаемые эксперты! У меня такой вопрос: как назначить одному событию два разных обработчика этого события. Например, у меня есть кнопка "Старт". После нажатия на нее запускается один обработчик, и надпись "Старт" заменяется н...

Вопрос № 121.734
Уважаемые эксперты!
У меня такой вопрос: как назначить одному событию два разных обработчика этого события. Например, у меня есть кнопка "Старт". После нажатия на нее запускается один обработчик, и надпись "Старт" заменяется на "Пауза". Как заменить обработчик, чтобы при следующем нажатии уже выполнялось действие соответствующее "Паузе" Язык программирования Visual Basic 2008

Приложение:

Отправлен: 05.02.2008, 11:10
Вопрос задал: Витер Александр Анатольевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: AlexanderZh
Здравствуйте, Витер Александр Анатольевич!
Все очень просто: внутри обработчика достаточно объявить статическую переменную-флаг (ее значение не будет сбрасыватся после выхода из процедуры) и использовать конструкцию If ... Then ... Else ... EndIF

Static Start as boolean = True
....
....
If Start Then
'блок команд группы "старт"
Start=False
Else
'блок команд группы "пауза"
Start=True
EndIf
---------
Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет... © народное
Ответ отправил: 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
Удачи!
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 10-ый класс)
Ответ отправлен: 05.02.2008, 16:08

Отвечает: 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


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное