Отображение кнопки Восстановить без кнопки Развернуть

StackOverflow https://stackoverflow.com/questions/372718

  •  21-08-2019
  •  | 
  •  

Вопрос

Я хочу запретить пользователю разворачивать форму Windows на весь экран, поэтому я отключил кнопку Развернуть.Тем не менее, я хочу иметь возможность заставить пользователя "восстановить" Форму.Когда они нажимают кнопку Восстановить, я хочу, чтобы она показывала другую, меньшую, уменьшенную форму, которая покажет им кнопку развернуть, которая вернет использование к исходной форме.

Есть ли способ сделать это?

Спасибо.

Редактировать:Вы не понимаете, я не запрещаю пользователю изменять размер формы.Что происходит, так это то, что когда вы нажимаете кнопку восстановить, она скрывает форму и открывает новую с меньшим количеством элементов управления в ней.Когда они нажмут кнопку развернуть на уменьшенной форме, она вернется к исходной форме.

Это было полезно?

Решение

Я рассматривал аналогичную проблему на работе, и единственное решение, которое я смог найти, заключалось в настройке недокументированных стилей окон, чего я не был склонен делать.

Поэтому лучшим решением вашей проблемы, я бы подумал, было бы скрыть текущие кнопки минимизации / максимизации / восстановления и добавить свои собственные, используя некоторые ownerdraw или другие команды.

Глядя на это с точки зрения взаимодействия с пользователем, я бы хотел, чтобы кнопки сворачивания / максимизации / восстановления выполняли для вашего приложения точно то же самое, что и для всех остальных.Переопределение этой функциональности создало бы путаницу для ваших пользователей, поэтому я бы рекомендовал создать разные кнопки либо в строке заголовка, либо где-нибудь еще в вашем интерфейсе, которые выполняют эту функцию.

Другие советы

FWIW, правильный ответ - правильно изменить размер вашей формы, адаптируясь к любому размеру окна, и не ограничивать пользователя тем, что выглядит правильно на ваш дисплей на ваш разрешение и ваш размер шрифта.Окна без изменения размера - одна из самых раздражающих вещей, с которыми я сталкиваюсь в приложении (в самой Windows их полно).

Вы можете установить максимальный и Минимальный размеры и включить кнопку развернуть, чтобы получить такой эффект.

Недавно у меня была похожая ситуация, и с точки зрения дизайна пользовательского интерфейса я нашел хороший пример в Windows Media Player.Он оставляет кнопки Минимизации, максимизации и восстановления такими, какие они есть, и имеет отдельную кнопку в правом нижнем углу для "Переключения в компактный режим".А в режиме mini / compact та же кнопка переключается на "Переключение в полный режим".Другим альтернативным примером является Skype, у которого есть дополнительная кнопка со значком системы слева от стандартной кнопки сворачивания, которая переключает между компактным и стандартным режимами.

(Если бы у меня была такая привилегия, я бы предпочел поместить это в качестве комментария для добавления к принятому ответу Daemin, все еще относительно новому для StackOverflow)

"Восстановление" формы запускает Resize событие, где вы можете проверить, больше не является ли родительская форма FormWindowState.Maximized.Если нет, вы можете открыть дочернюю форму и скрыть родительскую.

Чтобы обратить это вспять, вы можете "развернуть" дочернюю форму, скрыв (или удалив) ее, затем отменить скрытие и установить родительской форме значение FormWindowState.Maximized.

Единственная проблема, которую я вижу с помощью этого метода, заключается в том, что Resize событие, скорее всего, сработает несколько раз, прежде чем форма достигнет максимального состояния.Может потребоваться флаг, чтобы игнорировать их до тех пор, пока форма не перейдет из текущего состояния в желаемое, что может вызвать бесконечный цикл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top