Плохие вещи (TM)
На самом деле, я думаю, что это неопределенно, так что вообще ничего, включая игру в «Глобальную термоядерную войну» с мэйнфреймом NORAD
Событие ResizeEnd возникает после завершения перемещения. Возможно, тебе это пригодится.
Это не отказоустойчивое решение, это чистый .NET и очень простой. Добавьте в форму таймер, установите для него относительно короткую задержку (100–150 мс мне показалось нормальным). Добавьте следующий код для событий Form.LocationChanged и Timer.Tick:
private void Form_LocationChanged(object sender, EventArgs e)
{
if (this.Text != "Moving")
{
this.Text = "Moving";
}
tmrStoppedMoving.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
tmrStoppedMoving.Start();
this.Text = "Stopped";
}
Если вы хотите более точную обработку (точно зная, когда кнопка мыши отпускается в строке заголовка и т. Д.), Вам, вероятно, придется погрузиться в мониторинг сообщений Windows .
Просто установите флаг в значение true, когда запускаются события onmove. Если происходит событие mouseup и установлен флаг true, форма перестает перемещаться.
Я признаю, что это, вероятно, не сработает в случае, если пользователь перемещает форму с помощью клавиатуры, но это довольно редко.