2010-08-11 1 views

ответ

2

Это по дизайну. Вы можете работать вокруг него с помощью, скажем, MouseMove:

private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     Point pt = TargetControl.PointToClient(Cursor.Position); 
     Rectangle rc = TargetControl.ClientRectangle; 
     if (rc.Contains(pt)) 
     { 
      // do what would be done on MouseEnter 
     } 
    } 
} 

Это не идеально, хотя - если нажата кнопка мыши , когда мышь парит над другим контролем в форме, то это Безразлично» t появляется в событии MouseMove, что кнопка нажата (как указал @Hans, другой элемент управления «Захватывает» MouseDown). Если это проблема, то объединение теста ударов в MouseMove, в то время как отдельно отслеживание MouseDown и MouseUp в форме должно работать.

+0

Также не должно быть сообщений MouseMove. –

+0

@ Ханс - да, есть, я тестировал, что это сработало. – stuartd

+0

Нажмите на кнопку управления, удерживайте кнопку мыши, переместите ее над формой, чтобы увидеть, что я имею в виду. –