Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF окна. Стиль None. Растянуть на весь экран. Про 
V
    Опции темы
CasperSC
Дата 21.8.2010, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: 1
Всего: 1



Понадобилось мне растянуть окно на весь экран. Делаю я это так:

Код

            //Глобальная переменная
            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(300, 400, 300, 400);
            btnClose.Click += new RoutedEventHandler(btnClose_Click);

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

        //Обработчик закрытия этого окна
        void btnClose_Click(object sender, RoutedEventArgs e)
        {
            win.Close();
            win = null;
        }


Если вы вставите себе в любой WPF проект этот код, например на обработчик нажатия кнопки какой нибудь, то у вас сразу без проблем это будет работать. Так вот как видите курсор принимает вид "Рука" и окно растянуто на весь экран и поверх панели задач. Так вот когда вы будете водить по нему курсором, он будет иметь вид руки. А теперь попробуйте переместить курсор в правый угол, там он смениться на стрелочку, так как выйдет за пределы окна. Но я не пойму почему так? Ведь окно растягивается на весь экран. Вот эта проблема портит мне всю малину. 
Подскажите как можно обойти эту проблему? Или может это как то решается установкой каких нибудь свойств окна? Или может как-то возможно ограничить движение курсора внутри формы, пока её не закроют?

Это сообщение отредактировал(а) CasperSC - 24.8.2010, 05:41
PM MAIL   Вверх
Kefir
Дата 21.8.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



В твоём коде про курсор ничего не написано и, соответственно, никакой руки мы не увидим при использовании этого кода (может ты забыл строку win.Cursor = Cursors.Hand?). Я попробовал и особо ни в чём не разочаровался - курсок "рука" у меня был везде где только можно (ещё раз - при наличии строчки win.Cursor = Cursors.Hand). Может я чего не понял в твоей проблеме?
PM MAIL WWW Skype   Вверх
CasperSC
Дата 21.8.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: 1
Всего: 1



А точно.  Всё добавил в код. Нет, у меня курсор справа выходит за пределы окна почему-то. Сейчас я попробую скриншотов сделать.

Вот у меня справа по всему окну такая полоска. 
user posted image

Это сообщение отредактировал(а) CasperSC - 21.8.2010, 23:17
PM MAIL   Вверх
Kefir
Дата 21.8.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Наделай, а то я уже все углы обводил и по краям прошелся - рука как рука, хоть убей не меняется smile
PM MAIL WWW Skype   Вверх
CasperSC
Дата 21.8.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: 1
Всего: 1



Вот записал видео. WMV формат. Всё вроде отлично видно, разрешение экрана уменьшил, вроде размер не большой получился. А скриншот есть в ответе выше.

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  video.rar 314,01 Kb
PM MAIL   Вверх
CasperSC
Дата 22.8.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: 1
Всего: 1



Проблема решилась сама собой, перезагрузил компьютер, проблема исчезла. Мде, я вчера весь вечер просидел над этой бедой, а это просто какой-то глюк.
Я даже решил её так:
Код

            System.Drawing.Rectangle winRect = new System.Drawing.Rectangle(0, 0,
    (int)SystemParameters.PrimaryScreenWidth - 2,
    (int)SystemParameters.PrimaryScreenHeight - 2);
            System.Windows.Forms.Cursor.Clip = winRect;

Но всё равно мне не давало это покоя.

Это сообщение отредактировал(а) CasperSC - 22.8.2010, 11:29
PM MAIL   Вверх
CasperSC
Дата 24.8.2010, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 27.11.2009

Репутация: 1
Всего: 1



Вот опять появилась проблема. Курсор выходит за пределы формы. То есть справа получается форма не достаёт до края экрана. А это сильно мешает, так как выделяя рамку на экране, курсор выходит за пределы формы и начинаются всякие проблемы, которые решить кодом выше не реально. Так как это не постоянно. Может это из-за полноэкранных игр? Так как я одну свернул игру, потом запустил программу и опять эта беда. Может это вообще недоработка Framework?

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

================================================

Подсказали, что причина может быть в сдвиге растянутой формы, после включения/выключения игры (ну это я и сам понимал в принципе), так как форма растянута на весь экран, то по её краям есть как бы рамка тонкая, вот если добавить в код это:
Код

win.ResizeMode = System.Windows.ResizeMode.NoResize;

То проблема отпадает.

Это сообщение отредактировал(а) CasperSC - 24.8.2010, 18:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.