Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/76: Рейтинг темы: голосов - 76, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
1

Изменение локации объекта в зависимости от размера формы

08.09.2016, 21:25. Показов 15496. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как изменить свойство объекта(button, picturebox и т. д.) - Location, в зависимости от изменения свойство формы - size?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 21:25
Ответы с готовыми решениями:

Создание собственного VCL компонента. Динамическое изменение количества колонок в зависимости от размера объекта
Доброго времени суток всем. Решил при создании своего компонента на основе TStringGrid...

Авто изменение размера полей, подчиненной формы в зависимости от длины текста
Здравствуйте. Можно ли сделать так, чтобы автоматически устанавливались размеры полей,полей со...

Изменение размера блока в зависимости от его размера
Ребят в JS я вообще новичок, и при создании блога вышел нюанс, что без js не обойтись. Есть блок,...

Пропорциональное изменение размера tabControl1 при изменении размера формы
Всем hello. Посоветуйте, что сделать. На форме есть компоненты, делаю, чтобы при изменении...

16
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
08.09.2016, 23:59 2
Рассчитывать позицию нужного объекта исходя из размера формы. у формы, есть событие Resize
C#
1
2
3
4
5
6
this.Resize += new System.EventHandler(this.MForm_Resize);
 
private void MForm_Resize(object sender, EventArgs e)
        {
            this.label1.Location = new Point(this.Width / 2, this.Height / 2);
        }
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
09.09.2016, 11:57  [ТС] 3
iDReeM, Я ввожу первую строчку
C#
1
this.Resize += new System.EventHandler(this.MForm_Resize);
и она вся подчёркивается красной линией. Я её стёр.
Открываю Resize в конструкторе и ввожу вот эту строчку
C#
1
2
3
4
private void MForm_Resize(object sender, EventArgs e)
        {
            this.label1.Location = new Point(this.Width / 2, this.Height / 2);
        }
И когда я в открытой программе начинаю менять размер формы, кнопка съезжает на середину программы и уже там меняет своё Положения.
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
09.09.2016, 21:12 4
Цитата Сообщение от FaBios Посмотреть сообщение
И когда я в открытой программе начинаю менять размер формы, кнопка съезжает на середину программы и уже там меняет своё Положения.
в этом и суть, при изменении размера формы лейбл будет менять свое положение, а каким оно будет решаешь ты. можешь в углу поставить, можешь ещё гдето. ну или какой нить контейнер закрепи типо панели, и на него вешай лейблу.
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
10.09.2016, 10:29  [ТС] 5
iDReeM, Ну вот смотрите, у меня button стоит уже на своём месте, а когда я начинаю менять размер формы уже запущенной программы, button смещается в середину, но мне не нужно чтобы он смещался в середину, а менял положения уже со своего места.
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 15:24 6
Цитата Сообщение от FaBios Посмотреть сообщение
iDReeM, Ну вот смотрите, у меня button стоит уже на своём месте, а когда я начинаю менять размер формы уже запущенной программы, button смещается в середину, но мне не нужно чтобы он смещался в середину, а менял положения уже со своего места.
расчитывай положение бутона исходя из его текущего положения. ничего сложного.
C#
1
2
Point start = this.button1.Location;
Point end = new Point(x, y);//x и y считай уже от позиции бутона start и учитывай изменение размера формы.
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
10.09.2016, 23:05  [ТС] 7
iDReeM, как для новичка это сложно, вот как я написал:
C#
1
2
3
4
5
6
private void FormIMP_Resize(object sender, EventArgs e)
        {
            Point start = this.btnNext.Location;
            Point end = new Point(110, 441); // написал просто расположение кнопки потому-что не понял что значит: "x и y считай уже от позиции бутона start и учитывай изменение размера формы."
            this.btnNext.Location = new Point(this.Width / 2, this.Height / 2);
        }
и все ровно она съезжает в середину и от туда двигается.

Размер формы: 661; 527 Размер кнопки: 92; 41 Location кнопки: 110; 441
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 23:11 8
Цитата Сообщение от FaBios Посмотреть сообщение
iDReeM, как для новичка это сложно, вот как я написал:
это абсолютно не сложно.
на пример так, кнопка будет всегда в правом нижнем углу формы не зависимо от того как менять размер формы.
C#
1
2
3
4
private void Form1_Resize(object sender, EventArgs e)
        {
            this.button3.Location = new Point(this.Width - this.button3.Width - 25, this.Height - this.button3.Height - 50);
        }
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
11.09.2016, 09:03  [ТС] 9
iDReeM, Всё ровно не понятно, как растчетать где будет кнопка или как её оставить на своём положении? Ведь она постоянно съежает чего мне не нужно!
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
11.09.2016, 18:10 10
Цитата Сообщение от FaBios Посмотреть сообщение
как растчетать где будет кнопка или как её оставить на своём положении?
внемли словам моим террорист: запиши видео, и грамотно изложи свои мысли и требования в нем, указав словесно на нужный результат.
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
13.09.2016, 14:39  [ТС] 11
iDReeM, На изображении 2 кнопки, мне надо чтобы они обеи двигались в зависимости от того как я буду изменять размер формы(уже в запущенной программе). Пример: в право растягиваю программу, и они перемещаются в право, растягиваю в низ, кнопки ползут в низ.
И так вы даёте пример :
Цитата Сообщение от iDReeM Посмотреть сообщение
private void Form1_Resize(object sender, EventArgs e)
* * * * {
* * * * * * this.button3.Location = new Point(this.Width - this.button3.Width - 25, this.Height - this.button3.Height - 50);
* * * * }
мне как вы помните надо чтоб она двигаться начинала со своего места, но когда я ввожу: (this.Width - this.button3.Width - 441(вписал Location кнопки Y), this.Height - this.button3.Height - 110(вписал Location кнопки X))(Пробовал и наоборот) начинаю растягивать форму и у меня она перескакивает на другое место в форме(2 изображение). Ну вот я и спрашиваю как растчетать так чтобы она оставалась на своём месте(не перескакивала)?
Миниатюры
Изменение локации объекта в зависимости от размера формы   Изменение локации объекта в зависимости от размера формы  
0
784 / 615 / 273
Регистрация: 04.08.2015
Сообщений: 1,707
13.09.2016, 16:30 12
Лучший ответ Сообщение было отмечено Black Fregat как решение

Решение

Используйте свойство Anchor контрола. Значения top,left (по умолчанию) фиксирую контрол по верху и левому краю. Это может быть неудобно, когда контол должен быть на фиксированном расстоянии от правой стороны. Тогда ставите top,right.
Если нужно, чтобы контрол растягивался, ставьте top,left,right.
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
13.09.2016, 20:22 13
чтобы кнопка не прыгала вверх, прибавляй к Y позиции кнопки Высоту формы при расчете координат. А вообще, я для таких целей юзаю структуру, в которую передаю координаты.
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
13.09.2016, 20:35  [ТС] 14
iDReeM, А можете по подробней про структуру или просто как она называется?
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
13.09.2016, 21:18 15
Цитата Сообщение от FaBios Посмотреть сообщение
iDReeM, А можете по подробней про структуру или просто как она называется?
называется как хочешь, структура самописная, суть такова: у меня в DX рисуются контролы управления функциями длл, в прорисовке юзаю фичу которая сама считает кординаты для этих контролов в пространстве.
0
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 27
14.09.2016, 13:27  [ТС] 16
iDReeM, Фуф, всё наконец-то понял и сделал. Спасибо!

Добавлено через 13 минут
Igr_ok, Вам тоже спасибо, вы помогли кое с чем другим.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
14.09.2016, 13:43 17
Лучший ответ Сообщение было отмечено Black Fregat как решение

Решение

Вот же любители всё делать через альтернативные отверстия.
В винформах это всё элементарно делается через контейнеры типа Panel, GroupBox, ToolStrip и т.д.
Размещается на форме контейнер, в свойстве Dock указывается привязка, в контейнер накидываются контролы, которым также задаётся свойство Dock, но действует оно уже относительно контейнера.

Добавлено через 1 минуту
А ещё лучше - сразу уйти в WPF с его резиновым интерфейсом.
1
14.09.2016, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2016, 13:43
Помогаю со студенческими работами здесь

Расположение объекта div в зависимости от размера экрана
Подскажите, пожалуйста, возможно ли в html прописать алгоритм, по которому элемент div с текстом...

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

Изменение размера окна в зависимости от компонент
добавляю напанель JTextField с параметром setVisible(false);, в определённый момент нужно чтобы...

Изменение размера объекта
Добрый день! Подскажите, например есть какой то объект, нужно его перевести в режим редактирования...


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

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