У меня есть форма WinForm с ограниченным MaxSize. Если нажать кнопку максимизации, это окно появится в положение 0,0 (верхний левый угол) с правильным MaxSize. Есть ли способ предотвратить перемещение формы?Предотвращать перемещение MaxSized C# WinForm при максимальном размере
Я могу установить новую позицию после перемещения формы (по ОС), но пользователь может видеть форму, которая появляется на экране, что не очень аккуратно. (Я изменил FormName, чтобы опубликовать код здесь). SuspendLayout здесь не помогает, и я не обязательно хочу отключить кнопку максимизации.
void frmWinForm_SizeChanged(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Maximized)
{
var x = ... // some calculated or original x position
var y = ... // some calculated or original y position
WindowState = FormWindowState.Normal;
SetBounds(x, y, MaxSize.X, MaxSize.Y);
}
}
Это работает очень хорошо, спасибо за этот быстрый ответ. –
Не работает правильно, окно не может быть восстановлено. Вместо этого перепутайте WM_GETMINMAXINFO, измените значение ptMaxPosition. –
@HansPassant Спасибо за подсказку, я добавил, что ... – Norman