С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/103: Рейтинг темы: голосов - 103, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 16

Перетаскивание окна программы без бордюров по экрану

20.05.2012, 11:15. Показов 21959. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите.Я в FormBorderStyle поставил None,что означает у меня нет вверху панели где есть крестик,свертывание,название,значка.Так вот,я хочу свою панель сделать.Как мне сделать так что бы panel перетаскивалась?

Добавлено через 9 минут
Я добавил в форму panel.Теперь мне надо что бы её можно было зажимать и перетаскивать по всему экрану
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2012, 11:15
Ответы с готовыми решениями:

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

Как изменить размер окна без бордюров
У меня есть форма none , но как её перетаскивать(это умею делать), менять размер потянув за края, вызывать системное меню как у окна ? ...

Получить координаты окна без бордюров
Уважаемые знатоки, пожалуйста помогите определить координаты чужого окна без рамки Windows. Тип окна зараннее не известен, в общих случаях...

8
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.05.2012, 11:50
C#
1
2
3
4
5
6
7
8
9
10
        public FormMain()
        {
            InitializeComponent();
            this.MouseDown += new MouseEventHandler((o, e) =>
            {
                base.Capture = false;
                Message message = Message.Create(base.Handle, 0xA1, new IntPtr(2), IntPtr.Zero);
                this.WndProc(ref message);
            });
        }
только подпишите это событие на свою панель, или же перетаскивайте саму форму

могу рассказать по какому принципу это работает:
в момент когда вы нажимаете кнопку мыши происходит данное событие, а в нем мы создаем сообщение в котором говорим, что нажимаем левую кнопку мыши (WM_NCLBUTTONDOWN 0x00A1) и передаем в параметре HTCAPTION 2, тобиш указываем что кликаем по заголовку формы, тем самым инициализируем перетаскивание.

ЗЫ. по моему на форуме это уже было...
0
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 16
20.05.2012, 11:58  [ТС]
Объясните пожалуйста попорядку.Просто незнаю как делать событие и вообще не знаю что это)
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.05.2012, 12:28
а что там не понятного, там готовый рабочий пример (конструктор формы и в нем событие)
или же вставьте эту функцию в класс формы
C#
1
2
3
4
5
6
7
8
9
        protected override void WndProc(ref Message message)
        {
            if (message.Msg == 0x201)
            {
                base.Capture = false;
                message = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            }
            base.WndProc(ref message);
        }
0
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 16
20.05.2012, 12:43  [ТС]
я просто позавчера скачал VS 2010 Pro ))
0
29 / 29 / 8
Регистрация: 13.12.2009
Сообщений: 70
20.05.2012, 12:53
Попробуйте способ попроще, создайте два события Move и MouseDown у Panel и добавьте код в сгенерированные методы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private int x,y;
 
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                panel1.Left = (panel1.Left + e.X) - x;
                panel1.Top = (panel1.Top + e.Y) - y;
            }
        }
 
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            x = e.X;
            y = e.Y;
        }
1
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.05.2012, 15:34
Попробуйте способ попроще, создайте два события
в какую же сторону он проще? если
Просто незнаю как делать событие и вообще не знаю что это)
ну если так, то вот:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        protected override void WndProc(ref Message message)
        {
            if (message.Msg == 0x201)
            {
                base.Capture = false;
                message = Message.Create(base.Handle, 0xA1, new IntPtr(2), IntPtr.Zero);
            }
            base.WndProc(ref message);
        }
    }
}
или же
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            this.MouseDown += new MouseEventHandler((o, e) =>
            {
                base.Capture = false;
                Message m = Message.Create(base.Handle, 0xA1, new IntPtr(2), IntPtr.Zero);
                this.WndProc(ref m);
            });
        }
    }
}
если и так вы ничего не поняли. то тогда начинайте изучать основы
0
20.05.2012, 15:45

Не по теме:

Konctantin, твой метод, даже близко не для новичков. Я скинул пример, где просто нужно уметь создавать события и уметь их использовать.
Ты же предлагаешь мудреные вещи... сможешь ли разве быстро и доступно объяснить новичку, что ты сделал?... Передал Message не пойми что: 0xa1, new IntPtr(2), IntPtr.Zero и т.д.
И вроде бы он спрашивал про перемещение Panel на форме, а не саму форму )

0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.05.2012, 16:32
И вроде бы он спрашивал про перемещение Panel на форме, а не саму форму )
прочитайте внимательней первый пост.
Ты же предлагаешь мудреные вещи... сможешь ли разве быстро и доступно объяснить новичку, что ты сделал?... Передал Message не пойми что: 0xa1, new IntPtr(2),
я все расписал, да и ссылки указал, так что уж простите...

Я скинул пример, где просто нужно уметь создавать события и уметь их использовать.
а зачем столько геморроя с событиями? когда можно в пару строчек все сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2012, 16:32
Помогаю со студенческими работами здесь

Перетаскивание окна программы
Как средствами с# организовать перемещение окна при клике и удержании не за его рамку а за его любое место.

Перемещение формы без бордюров
Здарова! Помогите пожалуйста!!! Срочно нужно: что бы форма none могла перетаскиваться по столу при нажатии на панель. То есть: Зажал...

Как перетаскивать форму без бордюров
Не могу перетаскивать форму ( убрал свойства FormBorderStyle = none ) Но ничего не выходит Помогите кто знает)

Как перемещать форму без бордюров
Ребят, как можно сделать то,что я написал в заголовке? Добавлено через 10 минут P.S. имею ввиду отключение FormBorderStyle

Перетаскивание окна за любую его точку без WinApi
Дело в том, что в апи я 0 даже как вставить туда пару строк я не знаю могу только в VCL Form Application что-то писать подскажите код...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru