Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/321: Рейтинг темы: голосов - 321, средняя оценка - 4.89
 Аватар для KReedlas
1183 / 805 / 10
Регистрация: 30.08.2010
Сообщений: 2,686

Перемещение формы без границ

20.03.2011, 10:37. Показов 64579. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А возможно ли перемещать форму мышью по рабочему столу, если у нее нет рамки (FormBorderStyle=None)?
 Комментарий модератора 
Одна тема - один вопрос
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2011, 10:37
Ответы с готовыми решениями:

Нарисовать границы у формы без границ
Народ у меня вопросик можно ли на C# сделать обводку границ формы своим цветом и размером когда у формы отключены границы. Я нарисовал...

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

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

24
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.04.2011, 23:25
Студворк — интернет-сервис помощи студентам
KReedlas, а ты добавь в код, который тебе дал я, и все заработает
0
 Аватар для Enterely
2 / 1 / 1
Регистрация: 07.08.2014
Сообщений: 22
13.06.2015, 20:12
У меня вообще вот так вот получилось, достаточно точно работает. Мышка не скачет, как в примере, который в начале. Так или иначе тема актуальная, и вот готовое решение:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class Form1 : Form
{
    //Координаты мышки
    private int x = 0; private int y = 0;
 
    // Нажатие кнопки мышки
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        x = e.X; y = e.Y;
    }
    // Движение мышки
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            this.Location = new System.Drawing.Point(this.Location.X + (e.X - x), this.Location.Y + (e.Y - y));
 
        }
    }
 }
0
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 2
30.12.2018, 17:34
Я улучшил код. Теперь не только когда на форму нажимаешь она перемешается но и когда на другие элементы, в моем примере когда на Panel и на Label:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            base.Capture = false;
            panel1.Capture = false;
            label1.Capture = false;
            Message m = Message.Create(base.Handle, 161, new IntPtr(2), IntPtr.Zero);
            this.WndProc(ref m);
        }
 
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            Form1_MouseDown(sender, e);
        }
 
        private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            Form1_MouseDown(sender, e);
        }
0
 Аватар для Vamaki
1 / 1 / 0
Регистрация: 08.04.2019
Сообщений: 18
03.10.2019, 07:58
Вот решение проблемы изменения прозрачности при перетаскивании:
C#
1
2
3
4
5
6
7
8
9
10
 private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            base.Capture = false;
            this.Opacity = 0.6;
            Message m = Message.Create(base.Handle, 161, new IntPtr(2), IntPtr.Zero);
            this.WndProc(ref m);
            if (e.Button != MouseButtons.Right)
            {
                Opacity = 1;
            }
0
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 306
17.11.2020, 04:44
Всем привет) Решил не создавать новую тему, так как проблема точно один в один с этой.
Цитата Сообщение от KReedlas Посмотреть сообщение
FormBorderStyle=None
Цитата Сообщение от KReedlas Посмотреть сообщение
перетаскивание я хотел сделать на элементе panel
Но:
Цитата Сообщение от mak326428 Посмотреть сообщение
Создай обработчик MouseDown и впиши туда это:
C#
1
2
3
base.Capture = false;
        Message m = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
        this.WndProc(ref m);
Цитата Сообщение от mak326428 Посмотреть сообщение
Проще и меньше надо писать
У меня не сработало перетаскивание формы, по элементу Panel...
Самый первый пример nio, сработал с небольшим недостатком (при нажатии и первом движении мыши, форма чуть-чуть прыгает вверх)
Что не так? (What's wrong?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2020, 04:44

Перемещение формы без рамки
Можно ли перемещать форму без рамки удерживая мышью свободное от компонентов место на форме?Если да то как

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

Перемещение формы None, без бордера
Перемещение формы. Код: private void MainForm_MouseDown(object sender, MouseEventArgs e) { Capture = false; var m =...

Перемещение формы без FormBorderStyle = null;
Здравствуйте! Помогите пожалуйста, вот к примеру у меня есть форма на ней нет ничего кроме 1 панели и самой формы, как сделать так чтобы...

Перемещение за элемент label без бордера формы
смысл на картинке: Использую для перемещения за Panel private void Panelka_MouseDown(object sender, MouseEventArgs e) { ...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru