Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] WPF окна. Стиль None. Растянуть на весь экран. Проблемы с этим.

Ответить
Настройки темы
.NET - [решено] WPF окна. Стиль None. Растянуть на весь экран. Проблемы с этим.

Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Casper-SC
Дата: 22-08-2010
Понадобилось мне растянуть окно на весь экран. Делаю я это так:

Код: Выделить весь код
            //Глобальная переменная
            Window win = new Window();
            //======================

//====== Это содержимое нужно куда нибудь вставить, например обработчик нажатия на кнопке ======
            win.WindowState = System.Windows.WindowState.Maximized;
            win.WindowStyle = System.Windows.WindowStyle.None;
            win.Cursor = System.Windows.Input.Cursors.Hand;
            //Добавим кнопку "Закрыть" для удобства
            Button btnClose = new Button();
            btnClose.FontSize = 48;
            btnClose.Content = "Закрыть";
            btnClose.Margin = new Thickness(300, 400, 300, 400);
            btnClose.Click += new RoutedEventHandler(btnClose_Click);

            win.Content = btnClose;
            win.Show();
//=================================================================================

        //Обработчик закрытия этого окна
        void btnClose_Click(object sender, RoutedEventArgs e)
        {
            win.Close();
        }
Если вы вставите себе в любой WPF проект этот код, например на обработчик нажатия кнопки какой нибудь, то у вас сразу без проблем это будет работать. Так вот как видите курсор принимает вид "Рука" и окно растянуто на весь экран и поверх панели задач. Так вот когда вы будете водить по нему курсором, он будет иметь вид руки. А теперь попробуйте переместить курсор в правый угол, там он смениться на стрелочку, так как выйдет за пределы окна. Но я не пойму почему так? Ведь окно растягивается на весь экран. Вот эта проблема портит мне всю малину.
Подскажите как можно обойти эту проблему? Или может это как то решается установкой каких нибудь свойств окна? Или может как-то возможно ограничить движение курсора внутри формы, пока её не закроют?

Вот у меня справа по всему окну такая полоска:

Отправлено: 23:52, 21-08-2010

 

Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Проблема решилась сама собой, перезагрузил компьютер, проблема исчезла. Кто не понимает о чём вообще речь, вот видео (~314 kb) этой беды.

Я даже решил её так (не забываем это WPF, не WinForms):
Код: Выделить весь код
            System.Drawing.Rectangle winRect = new System.Drawing.Rectangle(0, 0,
    (int)SystemParameters.PrimaryScreenWidth - 2,
    (int)SystemParameters.PrimaryScreenHeight - 2);
            System.Windows.Forms.Cursor.Clip = winRect;
Но всё равно это не давало мне покоя.

Отправлено: 12:33, 22-08-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Casper-SC, код перед съёмкой не менялся? Потому как закрывающейся кнопки на растянутом на весь экран окне не видно на нём.
Дабы она была видна Thickness(300, 400, 300, 400) нужно заменить на Thickness(20, 40, 30, 40) (координаты то не в пикселях, а в аппаратно-независимых единицах).
Да и кнопка не должна быть закрывающейся, лучше указать Hide. Так как повторный вывод окна на весь экран вызовет проблему: win.Show() не отработает для окна которое уже закрыли.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:55, 23-08-2010 | #3


Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вроде не менялся, я что-то не помню. Вот немного поправленный код:
Код: Выделить весь код
            //Глобальная переменная
            Window win = new Window();
            //======================

//====== Это содержимое нужно куда нибудь вставить, например обработчик нажатия на кнопке ======
            if (win == null)
            {
                win = new Window();
            }
            win.WindowState = System.Windows.WindowState.Maximized;
            win.WindowStyle = System.Windows.WindowStyle.None;
            win.Cursor = System.Windows.Input.Cursors.Hand;
            //Добавим кнопку "Закрыть" для удобства
            Button btnClose = new Button();
            btnClose.FontSize = 48;
            btnClose.Content = "Закрыть";
            btnClose.Margin = new Thickness(100, 200, 100, 200);
            btnClose.Click += new RoutedEventHandler(btnClose_Click);

            win.Content = btnClose;
            win.Show();
//=================================================================================

        //Обработчик закрытия этого окна
        void btnClose_Click(object sender, RoutedEventArgs e)
        {
            win.Close();
            win = null;
        }
Опять появилась проблема. Курсор выходит за пределы формы. То есть справа получается форма не достаёт до края экрана. А это сильно мешает, так как выделяя рамку на экране (функция такая в программе, рамка выделяется на растянутой форме), курсор выходит за пределы формы и начинаются всякие проблемы, которые решить кодом в предыдущем моём сообщении не реально. Так как это не постоянно. Может это из-за полноэкранных игр? Так как я одну свернул игру, потом запустил программу и опять эта беда. Может это вообще недоработка Framework?

Добавлено позже:

Вот выключил игру и все лишние программы закрыл, проблема осталась. Далее жму ПКМ на рабочем столе Windows 7 - "Персонализация", там выбираю другую тему, экран как бы дёргается, все ярлыки на рабочем столе перерисовываются, запускаю программу всё проблема исчезла. Что это может быть? И можно ли такую перерисовку сделать программно? И всё же может как-то довести до разработчиков Framework'a это можно? Просто эта беда у меня всегда появляется, после открытия игр.

Отправлено: 06:40, 24-08-2010 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Casper-SC:
Просто эта беда у меня всегда появляется, после открытия игр. »
А если в игре выставить разрешение, равному разрешению на экране, проблема сохранится?

Почитайте вот такой поиск: http://www.google.ru/search?sourceid...een+resolution

http://www.c-sharpcorner.com/UploadF...esolution.aspx

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 07:03, 24-08-2010 | #5


Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вот именно, что проблема появляется всегда, разрешение по моему роли не играет. У меня монитор 1280х1024, во всех играх используется аналогичное. Думаю всё-таки это в самом Framework'e, что-то не учли или в чём там... Хотя ни знаю. А что ни у кого нету такой проблемы?

Отправлено: 08:34, 24-08-2010 | #6


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Casper-SC нет, проблемы не наблюдаю. Проверил на .NET3.0, .NET3.5 и .NET4.0 в ХР на 1024х768. Курсор всегда одним значком – указателем и никакой "руки".

Донести до разработчиков FW, можно например через сайт http://connect.microsoft.com/directory/ (см. Windows Presentation Foundation или Visual Studio and .NET Framework), необходима регистрация.

Отправлено: 15:40, 24-08-2010 | #7


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Сдается мне, проблема не в FW, а в драйверах на видеокарту, как это ни банально Я имею в виду перерисовку.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:06, 24-08-2010 | #8


Новый участник


Сообщения: 12
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Admiral:
Casper-SC нет, проблемы не наблюдаю. Проверил на .NET3.0, .NET3.5 и .NET4.0 в ХР на 1024х768. Курсор всегда одним значком – указателем и никакой "руки". »
По коду который я выложил должен быть курсор всегда "рукой", а при выходе за пределы формы по понятным причинам курсор менялся на стрелочку. Ну думаю как ни крути вы бы увидели эти полосы по сторонам экрана. Кстати замечал их не только справа, но и снизу.

Цитата Delirium:
Сдается мне, проблема не в FW, а в драйверах на видеокарту, как это ни банально Я имею в виду перерисовку. »
Хм... А кстати возможно. Ну тогда можно сильно не беспокоиться. Нажо будет проверить на других компьютерах, то есть повторить ситуацию. Кстати с драйверами на видеокарту у меня всё время какая-то беда. Вот недавно наконец-то нашёл свежие, но видимо они тоже не без греха

=======================================================
Подсказали, что причина может быть в сдвиге растянутой формы, после включения/выключения игры (ну это я и сам понимал в принципе), так как форма растянута на весь экран, то по её краям есть как бы рамка тонкая, вот если добавить в код это:
Код: Выделить весь код
win.ResizeMode = System.Windows.ResizeMode.NoResize;
То проблема отпадает.

Последний раз редактировалось Casper-SC, 24-08-2010 в 19:29. Причина: Подсказали причину проблемы, вроде как решение найдено


Отправлено: 16:53, 24-08-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] WPF окна. Стиль None. Растянуть на весь экран. Проблемы с этим.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] как устранить автоматическое разворачивание окна на весь экран? San_dr Microsoft Windows 7 6 23-05-2014 23:51
Разное - DOSовские окна на весь экран akalibr Microsoft Windows 2000/XP 2 19-06-2010 14:08
Фон растянуть по размеру окна DorianLeroy Вебмастеру 2 22-01-2010 19:24
Интерфейс - Затемнение панели задач и заголовка окна, при развертывании на весь экран. amzir Microsoft Windows 7 5 01-10-2009 18:16
Открытие окна во весь экран. Guest Вебмастеру 17 05-09-2004 01:55




 
Переход