Некоторые методы, использующие формы Windows, вызывают некоторый уровень внутреннего обновления формы, что (по моей оценке) заставляет форму «подобрать» позицию мыши и, таким образом, запустить событие MouseMove.Одним из таких методов является связывание всплывающей подсказки с формой.В результате,
int moveCount = 0;
ToolTip toolTip = new ToolTip();
private void form1_MouseMove(object sender, MouseEventArgs e)
{
Trace.WriteLine(moveCount);
moveCount++;
toolTip.SetToolTip(this, "Hello world");
}
будет срабатывать непрерывно, даже если мышь не перемещается, а
int moveCount = 0;
private void form1_MouseMove(object sender, MouseEventArgs e)
{
Trace.WriteLine(moveCount);
moveCount++;
}
будет срабатывать только тогда, когда мышь фактически перемещена.
Просмотр в событии MouseMove чего-то, что затрагивает форму «глубоким» способом, может помочь выявить источник циклического поведения.