Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
 Аватар для arz0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 5
.NET 4.x

"Прилипание" одной формы к другой

20.03.2012, 19:52. Показов 3214. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, вот у меня возник вопрос, можно ли организовать прилипание одной формы к другой, если же можно, то прошу, пожалуйста, меня просветить, буду очень признателен.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2012, 19:52
Ответы с готовыми решениями:

Переход от одной формы к другой и ошибка при закрытии одной из них
Здравствуйте! Есть 2 формы. Из одной перехожу во вторую по нажатию кнопки, со второй возвращаюсь в первую 2мя способами: 1) при закрытии...

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

Как из одной формы добавить вручную строки в ListBox из другой формы?
Подскажите как из одной формы добавить вручную строки в листбокс из другой формы? case "DTI": Room...

12
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.03.2012, 20:29
Основной принцип такой: ловим событие перемещение формы, и сравниваем координаты форм. Если разница не большая, то меняем на нужные нам координаты, на координатами другой формы.
0
 Аватар для arz0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 5
20.03.2012, 21:51  [ТС]
Так, теперь осталось понять, как бы это осуществить...
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
20.03.2012, 23:14
Как вариант
C#
1
2
3
4
        private void Form1_Move(object sender, EventArgs e)
        {
            label1.Text = this.Location.ToString();
        }
Добавлено через 25 минут
Так сделал прилипание к левому краю экрана
C#
1
2
3
4
5
6
7
8
9
        private void Form1_Move(object sender, EventArgs e)
        {
            if(Distance(new Point(0, this.Location.Y)) < 10)
                this.DesktopLocation = new Point(0, this.Location.Y);
        }
        private int Distance(Point p)
        {
            return (int)Math.Sqrt(Math.Pow(this.Location.X - p.X, 2) + Math.Pow(this.Location.Y - p.Y, 2));
        }
0
118 / 52 / 9
Регистрация: 23.12.2011
Сообщений: 120
21.03.2012, 12:52
Про разницу координат выше уже написали, надеюсь, пояснять не надо. В примере - прилипание к краям экрана, но их легко заменить на края формы.
C#
1
2
3
4
5
6
7
8
9
10
11
private void Form1_Move(object sender, EventArgs e)
{
    if (this.Left < 20)
        this.Left = 0;
    if (this.Top < 20)
        this.Top = 0;
    if (Screen.PrimaryScreen.WorkingArea.Right - this.Right < 20)
        this.Left = Screen.PrimaryScreen.WorkingArea.Right - this.Width;
    if (Screen.PrimaryScreen.WorkingArea.Bottom - this.Bottom < 20)
        this.Top = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;
}
Класс Screen - экран монитора, находится в библиотеке System.Windows.Forms.

Ох, черт, это неправильный пример, а удалить нельзя.
0
 Аватар для arz0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 5
21.03.2012, 21:27  [ТС]
Jezofine, Прости, а можно тогда на правильный вариант формы взглянуть?
0
118 / 52 / 9
Регистрация: 23.12.2011
Сообщений: 120
22.03.2012, 06:43
Цитата Сообщение от arz0 Посмотреть сообщение
Прости, а можно тогда на правильный вариант формы взглянуть?
Ну, из того, что я делала, ничего убедительного не вышло. Прилипать-то прилипает, но при расчете позиции прилепленной формы при движении основной выходит белиберда какая-то.
0
 Аватар для arz0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 5
22.03.2012, 09:43  [ТС]
Цитата Сообщение от Jezofine Посмотреть сообщение
Ну, из того, что я делала, ничего убедительного не вышло. Прилипать-то прилипает, но при расчете позиции прилепленной формы при движении основной выходит белиберда какая-то.
Полностью согласен, вчера сидел 4 часа, и ничего дельного не вышло
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
23.03.2012, 00:38
Лучший ответ Сообщение было отмечено как решение

Решение

Форма 1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class Left : Form
    {
        private Right r = new Right();
        public Left()
        {
            InitializeComponent();
            r.l = this;
            r.Show();
        }
 
        private void Left_Move(object sender, EventArgs e)
        {
            if(r.Docked)
            {
                r.DesktopLocation = new Point(this.Right, this.Location.Y);
            }
        }
    }
Форма 2
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
public partial class Right : Form
    {
        public Left l;
        public Right()
        {
            InitializeComponent();
        }
 
        public bool Docked;
        private void Right_Move(object sender, EventArgs e)
        {
            if (Distance(new Point(l.Right, this.Location.Y)) < 10)
            {
                this.DesktopLocation = new Point(l.Right, this.Location.Y);
                Docked = true;
            }
            else Docked = false;
        }
 
        private int Distance(Point p)
        {
            return (int)Math.Sqrt(Math.Pow(this.Location.X - p.X, 2) + Math.Pow(this.Location.Y - p.Y, 2));
        }
    }
Не идеал, но никто не мешает доработать
3
 Аватар для arz0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 5
23.03.2012, 10:59  [ТС]
Большое спасибо, за помощь
буду дорабатывать, как закончу, скину
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
11.05.2012, 22:09
Yukikaze, а можно ли жестко зафиксировать форму Right? И как сделать так, чтобы при появлении пристыковка уже была?
Спасибо.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
11.05.2012, 23:54
Нашёл сам, на просторах.
Крутая штука)))
Вложения
Тип файла: zip MagneticForms.zip (50.7 Кб, 114 просмотров)
1
22.10.2020, 21:08

Не по теме:


Цитата Сообщение от arz0 Посмотреть сообщение
буду дорабатывать, как закончу, скину
arz0, шел 2020, а он все дорабатывает..

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2020, 21:08
Помогаю со студенческими работами здесь

Сделать элементы одной формы,доступными для другой формы
Есть две формы, как сделать чтобы при обращении в форме 1 ....к значению из текстбокса из формы 2 не возникало проблем? Не могу понять,...

Перенести данные из textBox одной формы в listBox другой формы
Помогите пожалуйста) Нужно из textBox одной формы перенести данные в listBox другой формы.

Передача данных с DataGridView одной формы в TextBox другой формы
Ребята, мне необходимо передать значения с выбранной строки Datagridview в textboxы второй формы, но есть одно но! Нужно чтобы доступ был...

Передача данных из одной формы в таблицу dataGridView другой формы
Есть две формы на одной таблица на второй поля в которые пользователь вводит значения. Не получает со второй формы добавить больше одного...

Импортировать данные из таблицы ListView одной формы в таблицу DataGrid другой формы
Форумчане, помогите пожалуйста! С# изучаю недавно, поэтому многое не получается :-( Вопрос такой: можно ли реализовать следующее? и...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru