Перемещение формы C# остановило событие

Плохие вещи (TM)

На самом деле, я думаю, что это неопределенно, так что вообще ничего, включая игру в «Глобальную термоядерную войну» с мэйнфреймом NORAD

5
задан stuartd 31 May 2009 в 20:38
поделиться

3 ответа

Событие ResizeEnd возникает после завершения перемещения. Возможно, тебе это пригодится.

15
ответ дан 18 December 2019 в 09:52
поделиться

Это не отказоустойчивое решение, это чистый .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 .

2
ответ дан 18 December 2019 в 09:52
поделиться

Просто установите флаг в значение true, когда запускаются события onmove. Если происходит событие mouseup и установлен флаг true, форма перестает перемещаться.

Я признаю, что это, вероятно, не сработает в случае, если пользователь перемещает форму с помощью клавиатуры, но это довольно редко.

0
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: