2012-03-27 3 views
1

Моя проблема в том, что мне нужно изменить позицию указателя мыши в событии MouseMove, что вызывает бесконечную рекурсию. Мне нужно подавить событие MouseMove, которое генерирует Me.Cursor.Position = newpos. Как я могу это сделать?Как подавить событие MouseMove в конкретном случае?

Я читал около Me.EnableEvents = False, но это не относится к Visual Studio 2005, и я не смог найти эквивалент.

ответ

0

Что именно вы пытаетесь сделать? Может быть, есть лучший способ. Но предполагая, что это то, что вы хотите, вы можете отменить подписку обработчика события в своем MouseMove событии перед изменением позиции курсора с помощью RemoveHandler. Просто добавьте его, когда вы закончите:

Public Class MyForm 

    Private Sub MyForm_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ 
      Handles Me.MouseMove 

     UnsubscribeEvents() 

     ' change mouse pointer's position here... 

     ResubscribeEvents() 
    End Sub 

    Private Sub UnsubscribeEvents() 
     RemoveHandler Me.MouseMove, AddressOf MyForm_MouseMove 
    End Sub 

    Private Sub ResubscribeEvents() 
     AddHandler Me.MouseMove, AddressOf MyForm_MouseMove 
    End Sub 

End Class