Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: UserControl Добавлено: 26.11.06 18:41  

Автор вопроса:  Vit | Web-сайт: www.home-soft.jino-net.ru
Вариант 1
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, Y As Single, Y As Single)
    With UserControl
        If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
            ReleaseCapture
            RaiseEvent MouseOut()
'     ...
        Else
            SetCapture .hWnd
            RaiseEvent MouseMove(Button, Shift, X, Y)
'     ...
        End If
    End With
End Sub


Вариант 2
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, Y As Single, Y As Single)
    With UserControl
        If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
            RaiseEvent MouseOut()
'     ...
        Else
            RaiseEvent MouseMove(Button, Shift, X, Y)
'     ...
        End If
    End With
End Sub



Описываю проблему:
 У меня на контроле я использую только один элемент - Label.
При коде Вариант 1 событие MouseMove и MouseOut обрабатываются правильно, т.е. даже при быстром перемещении курсора событие MouseOut успевает сработать, но обработка события Label1_Click(), находящего в контроле происходит со сторого раза, как и остальные события контролов. Поясню, это событие срабатывает со второго нажатия на котрол.

Если использовать код Вариант 2 всё нормально, кроме обработки X и Y, т.е. при быстром перемещении мыши, код не успевает сработать.

Что можно сделать?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 26.11.06 20:03
Создать таймер, в таймере api фциями GetCursorPos получать координаты мыши и сравнивать их с координатами юзерконтрола...

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #2
Добавлено: 26.11.06 20:51
Создать таймер, в таймере api фциями GetCursorPos получать координаты мыши и сравнивать их с координатами юзерконтрола...
Что-то мне кажется, таймер будет много лишних ресурсов кушать. Как-от на этом попался. Лучше делай то, что сказал Хакер в MouseMove

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 27.11.06 11:11
Попробуй STATIC, MouseHover, MouseLeave, ну и сабкласс. Геморно, но все же не таймер. Может и не поможет, если тут байда с фокусом...

Ответить

Номер ответа: 4
Автор ответа:
 Vit



Вопросов: 68
Ответов: 62
 Web-сайт: www.home-soft.jino-net.ru
 Профиль | | #4
Добавлено: 27.11.06 17:50
Попробуй STATIC, MouseHover, MouseLeave, ну и сабкласс

Что за STATIC? Вариант с таймером я рассматривал, но отказался в силу того, что экземплятов котрола будет много.
Буду думать...

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 27.11.06 18:19
Я как то лет 300 назад, делал пример MouseOut.. Он так и называется, и где то в примерах на этом сайте он есть. Посмотри, может что полезного оттуда выдернешь.. Хотя я уже даже и не помню как там все делал.. (( давно это было..

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам