Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
kaznachei67
27 / 27 / 15
Регистрация: 17.03.2014
Сообщений: 103
1

Автоматическое позиционирование контрола при перемещении

05.04.2015, 04:57. Просмотров 298. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток! Задача следующая: в программе есть рабочее поле, по которому пользователь может перемещать PicturBox-ы, располагая и изменяя их размеры как ему вздумается. Нужно реализовать функцию, которая при перемещении одного PictureBoxа рядом с другим будет автоматически предлагать "состыковывать" их границы. То есть как в IDE, среда дает подсказки относительно размеров контролов и их положения.
Попытался сделать на простом примере с двумя кнопками: button2 находится справа, при приближении к button1 должна вплотную стыковаться с ней. На деле же кнопка начинает двоится, словно пытается отрисоваться и по условию, и по положению курсора. В чем косяк?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void button2_MouseMove(object sender, MouseEventArgs e)
        {
            if (captured) // захват кнопки мышкой
            {
                if (button2.Left >= button1.Left + button1.Width - 40 && button2.Left <= button1.Left + button1.Width + 40)
                {
                    button2.Left = button1.Left + button1.Width;
                    button2.Top += e.Y - p.Y;
                    if (Math.Abs(e.X - button1.Left + button1.Width) > 40)
                    {
                        button2.Top += e.Y - p.Y;
                        button2.Left += e.X - p.X;
                    }
                }
                else
                {
                    button2.Top += e.Y - p.Y;
                    button2.Left += e.X - p.X;
                }
            }
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2015, 04:57
Ответы с готовыми решениями:

Событие при при перемещении курсора мыши в уже выпавшем списке ComboBox
Всех с Наступившим Новым Годом! Счастья и удачи побольше в этом году! Не...

DataGridView тормозит при перемещении
Приветствую.Добавил дочернюю форму, в неё поместил datagridview теперь при...

Смещение окна при перемещении
При начале перемещения окна, оно смещается относительно координат. Форма без...

Задержка при перемещении PictureBox-са
Всем привет! у меня на форме есть панель(panelcenter) на ней находится...

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

1
Kazbek17
https://vk.com/a.tsarev83
52 / 57 / 21
Регистрация: 06.02.2012
Сообщений: 232
05.04.2015, 11:43 2
Чтобы создать авто стыковку, на вашем холсте должны быть границы, которые будут указывать на пропорциональное промежутки между ними.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2015, 11:43

Управление событиями одного контрола через события другого контрола
Уважаемые форумчане помогите решить проблему. Есть два компонента на форме:...

Как избавиться от мерцания при перемещении Picturebox?
привет, необходимо организовать движение спрайта по форме, при перемещении...

Раздваивание: баг при перемещении геометрической фигуры GDI+
Собственно писал небольшую игрушку на WinForms, и при реализации возможности...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru