Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
26 / 26 / 13
Регистрация: 01.07.2016
Сообщений: 105
1
.NET 4.x

Растягивание окна приложения по сторонам экрана, аналогично обычному Проводнику в Win10

01.07.2016, 23:42. Показов 2783. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно, в чем суть вопроса:
Есть приложение на WinWorms, окно которого требуется растянуть на весь экран при поднятии его до верхнего края экрана(Y=0).
Растянуть на левую половину экрана при подведении его к левому краю экрана.
И аналогично с правой стороной.
Своими силами растянуть - не проблема в общем-то, уже частично реализовано.
Но задача именно в том, чтобы это действие обрабатывалось системой как стандартное (Это возможно практически для каждого приложения на Windows 10, для примера приведен Explorer в заголовке. Так же сопровождается красивой анимацией).
Облазил кучу сайтов и форумов, информации не нашел, возможно как-то коряво сформулирован запрос))
Если есть какие вопросы - всегда готов уточнить)
Надеюсь на помощь и советы)
Заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2016, 23:42
Ответы с готовыми решениями:

Организовать доступ к компам сети без пароля (аналогично Win10)
Имеется локальная сеть с N компами. На одном из компов стоял Win10, доступ к другим компам...

Как реализовать отображение окна приложения по центру экрана
Подскажите, Как реализовать отображение окна приложения по центру экрана?

Растягивание формы по разрешению экрана
Парни помогите плиз короче у меня такая проблемка. Я создаю основную форму ну допустим разрешением...

Растягивание блока на всю ширину экрана
Всем привет! кто подскажет как сделать что бы блок растягивался на всю ширину экрана. Вот код...

7
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
02.07.2016, 12:23 2
SasukeSagara, это функция AeroSnap, любое приложение на WinForms будет поддерживать AeroSnap, но при условии, что у формы есть рамки.
1
26 / 26 / 13
Регистрация: 01.07.2016
Сообщений: 105
02.07.2016, 13:32  [ТС] 3
Цитата Сообщение от atoi Посмотреть сообщение
SasukeSagara, это функция AeroSnap, любое приложение на WinForms будет поддерживать AeroSnap, но при условии, что у формы есть рамки.
Да, я не спорю.
Именно об этом и забыл упомянуть, моя задача в том, чтобы реализовать то же самое только при BorderStyle:None.
Если, конечно, это вообще возможно)
А за подсказку - спасибо)) Теперь хоть знаю в каком направлении смотреть))
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
02.07.2016, 14:37 4
SasukeSagara, реализовать можно, но есть некоторые нюансы.
Посмотрите, например, как это реализовано в проекте SharpForm.
В версии 2 при этом видна рамка формы при изменении размера формы, а также пустота справа и снизу при максимизации формы.
Если смотреть версию 3, то они "решили" эту проблему, сделав рамки в 7 пикселей .
1
309 / 317 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
02.07.2016, 14:44 5
SasukeSagara, Ставим у формы: FormBorderStyle = Sizable, ControlBox = false, Text = ""
При этом рамка почти пропадает, а AeroSnap работает
1
26 / 26 / 13
Регистрация: 01.07.2016
Сообщений: 105
02.07.2016, 15:24  [ТС] 6
Цитата Сообщение от atoi Посмотреть сообщение
Посмотрите, например, как это реализовано в проекте SharpForm.
В версии 2 при этом видна рамка формы при изменении размера формы, а также пустота справа и снизу при максимизации формы.
Если смотреть версию 3, то они "решили" эту проблему, сделав рамки в 7 пикселей .
С этим обязательно покопаюсь, возможно, найду ответ)
Цитата Сообщение от sldp Посмотреть сообщение
SasukeSagara, Ставим у формы: FormBorderStyle = Sizable, ControlBox = false, Text = ""
При этом рамка почти пропадает, а AeroSnap работает
Я попробовал и, в общем, не вариант, тк интерфейс самого приложения в данном случае страдает)
Спасибо за совет)

К слову, у приложения BorderStyle=none, ControlBox выполнен своими силами.
Изменение размера приложения(Потянуть за угол/за край) реализовано перехватом и обработкой системных сообщений.
А всё лишь для того, чтобы изменить интерфейс ControlBox
Собственно, я и подумал, что есть вариант работать по той же схеме.
Скриншот приложения прикреплен ниже


P.S. Код для позволяющий менять размеры окна(мб кому пригодится)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0084) //  WM_NCHITTEST 
            {
                if (WindowState == FormWindowState.Normal)
                {
                    int x = Cursor.Position.X - Location.X;
                    int y = Cursor.Position.Y - Location.Y;
                    if (x < 3)
                    {
                        if (y < 3)
                        {//HTTOPLEFT
                            m.Result = new IntPtr(13);
                        }
                        else if (y < Height - 3)
                        {// HTLEFT
                            m.Result = new IntPtr(10);
                        }
                        else {//HTBOTTOMLEFT
                            m.Result = new IntPtr(16);
                        }
                    }
                    else if (x > Width - 90)
                    {
                        if (x > Width - 3)
                        {
                            if (y <= 30)
                            {
                            }
                            else
                            if (y < Height - 3)
                            {
                                // HTRIGHT
                                m.Result = new IntPtr(11);
                            }
                            else
                            {
                                //HTBOTTOMRIGHT
                                m.Result = new IntPtr(17);
                            }
                        }
                        else if (y > Height - 3)
                        {
                            //HTBOTTOM
                            m.Result = new IntPtr(15);
                        }
                    }
                    else if (y > Height - 3)
                    {
                        //HTBOTTOM
                        m.Result = new IntPtr(15);
                    }
                    else if (y < 3)
                    {
                        //HTTOP
                        m.Result = new IntPtr(12);
                    }
                    else base.WndProc(ref m);
        }
Миниатюры
Растягивание окна приложения по сторонам экрана, аналогично обычному Проводнику в Win10  
0
309 / 317 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
02.07.2016, 15:50 7
Лучший ответ Сообщение было отмечено SasukeSagara как решение

Решение

Цитата Сообщение от SasukeSagara Посмотреть сообщение
А всё лишь для того, чтобы изменить интерфейс ControlBox
SasukeSagara, Форма с произвольным дизайном заголовка и бордера
1
26 / 26 / 13
Регистрация: 01.07.2016
Сообщений: 105
02.07.2016, 16:05  [ТС] 8
Стоило раньше зарегистрироваться на данном форуме))
Цитата Сообщение от sldp Посмотреть сообщение
SasukeSagara, Форма с произвольным дизайном заголовка и бордера
Да, это то что нужно, мороки было бы меньше, знай я об этом пару дней назад
Спасибо, займусь реконструкцией приложения)

Ну а всё же, чисто спортивный интерес, каким образом можно заставить систему реагировать стандартно на действия в моем случае?
Какие системные сообщения требуется обрабатывать?
0
02.07.2016, 16:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2016, 16:05
Помогаю со студенческими работами здесь

Растягивание окна
Собственно нужно чтобы при растягивании формы, тянулись все виджеты. знаю что можно сделать через...

Растягивание изображения под любое разрешение экрана
Здравствуйте, уважаемые друзья! Пожалуйста, помогите. Вы не подскажите, как сделать так, чтобы...

Запретить растягивание окна
Как запретить изменение размеров окна(растягивание)?

Как запретить растягивание окна
Как в готовом приложение запретить растягивать размер окна-чтобы он был статичным и все кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru