vb.net активировал пожары несколько раз - PullRequest
1 голос
/ 22 сентября 2011

Я хочу обновить базу данных на основе формы, которая в данный момент активирована.Первоначально я решил использовать событие GotFocus.Однако теперь я понимаю, что это не сработает, поскольку форма имеет элементы управления.Тогда я подумал, что буду использовать активированное событие.Это работает, но, кажется, срабатывает несколько раз.Я ввел следующий код:

Private Sub frmNewTicket_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
    MsgBox("Form Activated")
End Sub

Я выбираю форму и активирую ее, и окно сообщения появляется примерно 15 раз.

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

ПРИМЕЧАНИЕ. Пользователи могут переключаться между несколькими формами, включая формы из других приложений.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Каждый раз, когда вы нажимаете OK в окне сообщения, форма восстанавливает фокус и снова активируется.

Поместите статическое значение Boolean в ваш frmNewTicket_Activated, как кто-то опубликовал здесь:

Static HasRan As Boolean=False
If Not HasRan Then
    HasRan=True
    'put code here
End If
1 голос
/ 22 сентября 2011

Похоже, вы хотите что-то делать каждый раз, когда ваша форма активируется.Событие Form Activated будет работать нормально до тех пор, пока то, что вы делаете, не отвлекает внимание от Form, которое затем вызовет другое событие Activation, когда форма снова получит фокус.Попробуйте использовать что-то отличное от MessageBox для тестирования, например Beep или измените цвет формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...