Отображение кнопки восстановления без кнопки «Развернуть» - PullRequest
1 голос
/ 17 декабря 2008

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

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

Спасибо.

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

Ответы [ 5 ]

2 голосов
/ 17 декабря 2008

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

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

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

1 голос
/ 17 декабря 2008

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

0 голосов
/ 23 июня 2014

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

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

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

0 голосов
/ 16 июля 2011

Недавно у меня была похожая ситуация, и с точки зрения дизайна пользовательского интерфейса нашел хороший пример в проигрывателе Windows Media. Он оставляет кнопки «Свернуть», «Развернуть» и «Восстановить» такими, какие они есть, и имеет отдельную кнопку в правом нижнем углу для «Переключения в компактный режим». А в мини / компактном режиме та же кнопка переключается в «Переключение в полный режим». Другой альтернативный пример - Skype, у которого есть дополнительная кнопка со значком системы слева от стандартной кнопки свертывания, которая переключается между компактным и стандартным режимами.

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

0 голосов
/ 17 декабря 2008

Вы можете установить MaximumSize и MinimumSize и включить кнопку максимизации, чтобы получить этот вид эффекта.

...