Страница: 1 | 2 |
Вопрос: привязка события
Добавлено: 15.04.08 19:42
Автор вопроса: __Pavel__ | Web-сайт:
в моем проекте есть переменная PathSave как привязать к ней следующее:
MsgBox("Переменная поменяла свое значение!")
End Sub
?????????????????
Заранее благодарен!
Ответы
Всего ответов: 21
Номер ответа: 1
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #1
Добавлено: 15.04.08 21:30
либо я не так объяснил, либо никто не знает, либо это невозможно... хоть что нибудь ответьте! работа горит!
Номер ответа: 2
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #2
Добавлено: 15.04.08 22:50
ну, где она может поменять значение, там и проверяй, если это тестбокс например, то после ввода, ну или по ситуации где там
Номер ответа: 3
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #3
Добавлено: 15.04.08 22:58
да все это я знаю... слишком много мест где она меняется! мне надо отлавливать ее изменение!
Для поля можно например прописать следующее:
AddHandler Button1.Click, AddressOf Button_Click
End Sub
а как что-то вроде этого сделать для переменной, чтоб как только она изменилась сразу вызывалось событие:
MsgBox("Переменная поменяла свое значение!"
End Sub
Номер ответа: 4
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #4
Добавлено: 15.04.08 22:59
ой не для поля, а для кнопки... ну вы поняли
Номер ответа: 5
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #5
Добавлено: 16.04.08 03:58
AddHandler Button1.Click, AddressOf Button_Click
End Sub
фигня какая-то
Private Sub PathSaveChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Переменная поменяла свое значение!"
End Sub
--
Cоздай класс, сделай свойство, например, Text, и когда оно будет меняться, вызывай соответствующее событие.
...
...
...
Private _Text As String = String.Empty
Public Property [Text]) As String
Get
Return _Pattern
End Get
Set(ByVal value As String)
...
_Text = value
...
Dim MyArg As New MyEventArgs() 'если надо, то нужно еще состряпать класс MyEventArgs
RaiseEvent TextChange(Me, MyArg)
...
End Set
End Property
ну а дальше создаешь экземпляр этого класса, делаешь примерно то, что ты делал с кнопкой, и всё.
Номер ответа: 6
Автор ответа:
Yanex
ICQ: 387761649
Вопросов: 32
Ответов: 169
Web-сайт:
Профиль | | #6
Добавлено: 16.04.08 13:10
Кстати, метод фиговый, но может помочь:
если переменная типа String, можно созать Лабел с ее именем, объявить как глобальный и вместо переменной изменять значение текста.
Номер ответа: 7
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #7
Добавлено: 16.04.08 13:48
обоснуй
Номер ответа: 8
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #8
Добавлено: 16.04.08 15:10
to Yanex
вот насчет лейбола поподробней...
to Алексей
метод нормальный, на другом форуме так же ответили
НО! у меня МНОГО переменных! Обработчик ОДИН! Сами подумайте... создавать для каждой класс... неудобно, а вот насчет лейбола мне понравилось привязать изменение свойства текста всех лейблов к обработчику и все
Номер ответа: 9
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #9
Добавлено: 16.04.08 15:14
AddHandler Button1.Click, AddressOf Button_Click
End Sub
фигня какая-то
MsgBox("Переменная поменяла свое значение!"
End Sub
неее... это вы не так поняли
первый код я написал для примера, а второй код это пример обработчика изменения ПЕРЕМЕННОЙ
Номер ответа: 10
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #10
Добавлено: 16.04.08 15:43
Не вижу никаких проблем, а таскать с собой ящик яиц нет смысла, когда нужно только одно
и в чем проблема, также самая кнопка:
MsgBox(CType(sender, Control).Name)
End Sub
а в случае со своим классом можно сделать все что угодно. Делаешь класс, как я выше написал, например:
Public Event TextChange(ByVal sender As Object, ByVal e As MyEventArgs)
...
...
...
Private _Text As String = String.Empty
Public Property [Text]) As String
Get
Return _Pattern
End Get
Set(ByVal value As String)
...
_Text = value
...
Dim MyArg As New MyEventArgs() 'если надо, то нужно еще состряпать класс MyEventArgs
RaiseEvent TextChange(Me, MyArg)
...
End Set
End Property
End Class
и класс с аргументами (если нужно):
Public field1 As String = "превед"
Public field2 As Integer = 1
Public field3 As New Button()
Public field4 As Image = Nothing
Public field5 As DateTime = DateTime.Now
'и т.д. и т.п
End Class
далее:
for i as integer = 0 to 100
Dim o As New MyObject
o.Text = i.ToString()
AddHandler o.TextChange, AddressOf PathSaveChanged
myObj.Add(o)
next i
и далее:
'sender - объект
'e - аругменты, например e.field1 , etc.
MessageBox.Show(CType(sender, MyObject).Text)
'на всякий случай лучше еще тип sender-а проверить, чтоб косяков не было
End Sub
Номер ответа: 11
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #11
Добавлено: 16.04.08 16:55
сразу скажу что я новичек и плохо все, что вы здесь написали, знаю
для моего обработчика не важно какой тип у переменной, в большинстве случаев он просто проверяет пустое значение или нет...
Вообщем мне нужно вызвать обработчик при любом изменении указанных переменных и все.
Номер ответа: 12
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #12
Добавлено: 17.04.08 04:24
Добавь топик в избранное, потом, как прийдет время, почитаешь, расскажешь нам о результатах
Номер ответа: 13
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #13
Добавлено: 17.04.08 12:06
для таких случаев проще всего создать класс, который будет содержать нужные переменные в закрытой области, и объявить методы для доступа к этим данным - SetBlabla, GetBlabla. Еще можно почетать про паттерны, не помню как он называется, но суть - если кому то необходимо отслеживать изменения объекта, он передает классу метод, который будет вызываться при изменении переменной. кароч, ооп в помощь. вбдотнет как никак с ним в ладах.
Номер ответа: 14
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #14
Добавлено: 17.04.08 16:11
Помоему, сет и гет для .НЕТа уже не существуют.. или я чего то путаю)
Номер ответа: 15
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #15
Добавлено: 17.04.08 16:52
а куда они делись? )