Андрей Журавлев
Мастер
(2205)
7 месяцев назад
В целом должно работать, но могу предположить что:
1 - Код не выполняется (не доходит до него). Просто поставь брекпоинт и проверь.
2 - Размер окна равен размеру экрана и разница незаметна, но заголовок окна все равно должен включаться/отключаться.
Ну и небольшое замечание: при обратном действии TopMost остается включенным, что на работу влиять не должно, то окно останется поверх других, что может быть не всегда удобно.
R VУченик (68)
7 месяцев назад
Спасибо за ответ! Я нашёл, в чём проблема. Оказалось - совсем не в форме.
Код работал, но поскольку у меня был подключён Cefsharp (браузер chromium), он почему-то выдавал событие Frameloadend при изменении размера, хотя ничего не грузил и я вообще его скрывал ( Hide(); ). То есть форма действительно меняла размер, но тут же снова становилась полноэкранной, так как при успешной загрузке браузером это было написано у меня. В общем, при уменьшении формы пришлось программно отключать обработчик события этого самого браузера. Но вообще странно, похоже на баг самого браузера
R VУченик (68)
7 месяцев назад
Хотя возможно, это не баг и это событие возникает не только при успешной загрузке
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
И он работает. Всё хорошо. Но когда (при некоторых обстоятельствах, например, при ошибке загрузки) нужно вернуть форму в прежние размеры, если она вдруг уже успела развернуться во весь экран, я применяю следующий (обратный) код:
FormBorderStyle = FormBorderStyle.Sizable;
WindowState = FormWindowState.Normal;
И ничего не работает. Окно остаётся развёрнутым на весь экран. Я уж и свойства формы менял, и пробовал вместо Normal установить Minimized. Ничего не помогает
Может быть, мой вопрос слишком "нубский", но всё же как мне вернуть форму в размеры по умолчанию (и расположить по центру экрана) ?
Надеюсь, я всё понятно изложил, если нужны будут какие-нибудь дополнения, напишу позже