Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2010, 23:23   #1
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию WPF окна. Стиль None. Растянуть на весь экран. Проблемы с этим.

Понадобилось мне растянуть окно на весь экран. Делаю я это так:
Код:
            //Глобальная переменная
            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 проект этот код, например на обработчик нажатия кнопки какой нибудь, то у вас сразу без проблем это будет работать. Так вот как видите курсор принимает вид "Рука" и окно растянуто на весь экран и поверх панели задач. Так вот когда вы будете водить по нему курсором, он будет иметь вид руки. А теперь попробуйте переместить курсор в правый угол, там он смениться на стрелочку, так как выйдет за пределы окна. Но я не пойму почему так? Ведь окно растягивается на весь экран. Вот эта проблема портит мне всю малину.
Подскажите как можно обойти эту проблему? Или может это как то решается установкой каких нибудь свойств окна? Или может как-то возможно ограничить движение курсора внутри формы, пока её не закроют?

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

Последний раз редактировалось Casper-SC; 22.08.2010 в 00:18.
Casper-SC вне форума Ответить с цитированием
Старый 22.08.2010, 01:10   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Предлагаю такой вариант,немного топорно,но работает.Пишу как у меня(черновой вариант).Глобально объявляешь
Код:
Timer tmr;
Пишешь функцию:
Код:
 public void CursoPos(object sender, EventArgs e)
        {
            Point pos = this.PointToClient(Cursor.Position);
            if (pos.X < 2)
                Cursor.Position = new Point(this.Left + 2, Cursor.Position.Y);
            if (pos.X > this.Width-2)
                Cursor.Position = new Point(this.Width+this.Left - 2, Cursor.Position.Y);
            if (pos.Y < 2)
                Cursor.Position = new Point( Cursor.Position.X,this.Top +5);
            if (pos.Y > this.Height- 30)
                Cursor.Position = new Point(Cursor.Position.X ,this.Height + this.Top - 30);
        }
Пишешь в обработчике события(насколько я понял у тебя это подписано как Это содержимое нужно куда нибудь вставить, например обработчик нажатия на кнопке)
Код:
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;
            tmr = new Timer();
            tmr.Interval = 1;
            tmr.Tick += new EventHandler(CursoPos);
            tmr.Start();
            win.Show();
Надеюсь,что пригодится,первый опыт работы с позицией курсора)))
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 22.08.2010, 02:10   #3
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

На другом форуме человек говорит, что у него нету этой полоски справа. У кого то тоже есть? И возможно ли её вообще убрать? В Winforms нету такой проблемы.
Casper-SC вне форума Ответить с цитированием
Старый 22.08.2010, 12:27   #4
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

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

Я даже решил её так (не забываем это 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;
Но как мне кажется это мне не подходит ну не как, но лучше таймеров =)
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Во весь экран _-Re@l-_ Общие вопросы Delphi 10 22.06.2010 11:00
форма во весь экран... beygul Помощь студентам 1 03.01.2010 14:57
Во весь экран!!! Orodret Общие вопросы C/C++ 2 01.05.2009 17:58
форма во весь экран??? zzzzz Помощь студентам 8 08.11.2007 08:39
во весь экран Артэс Общие вопросы C/C++ 7 17.08.2007 23:37