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

Изменение размеров элементов на форме

24.06.2018, 11:09. Показов 2200. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем участникам форума. Недавно начал работать с windows формами, пытаюсь сделать так чтоб элементы на форме изменялись вместе с формой. Написал код который должен работать, но работает не всегда.
Вот код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        private void Form1_SizeChanged(object sender, EventArgs e)
        {
            if (changed == true)
            {
                double a, b;
                a = this.Width / 816;
                b = this.Height / 489;
                if (a > 0 & b > 0)
                {
                    if (this.Width == 816 & this.Height == 489)
                    {
                        button.AutoSize = false;
                        button2.AutoSize = false;
                    }
                    else
                    {
                        text.Location = new Point(Convert.ToInt32(13 * a), Convert.ToInt32(37 * b));
                        text.Size = new Size(Convert.ToInt32(114 * a), Convert.ToInt32(20 * b));
                        text.Font = new Font("Arial", Convert.ToInt32(10 * a), FontStyle.Bold);
                        text1.Location = new Point(Convert.ToInt32(146 * a), Convert.ToInt32(37 * b));
                        text1.Size = new Size(Convert.ToInt32(114 * a), Convert.ToInt32(20 * b));
                        text1.Font = new Font("Arial", Convert.ToInt32(10 * a), FontStyle.Bold);
                        text2.Location = new Point(Convert.ToInt32(13 * a), Convert.ToInt32(63 * b));
                        text2.Size = new Size(Convert.ToInt32(246 * a), Convert.ToInt32(20 * b));
                        text2.Font = new Font("Arial", Convert.ToInt32(10 * a), FontStyle.Bold);
                        text3.Location = new Point(Convert.ToInt32(363 * a), Convert.ToInt32(418 * b));
                        text3.Size = new Size(Convert.ToInt32(344 * a), Convert.ToInt32(23 * b));
                        text3.Font = new Font("Arial", Convert.ToInt32(10 * a), FontStyle.Bold);
                        button.Location = new Point(Convert.ToInt32(265 * a), Convert.ToInt32(34 * b));
                        button.Size = new Size(Convert.ToInt32(85 * a), Convert.ToInt32(49 * b));
                        button.Font = new Font("Arial", Convert.ToInt32(8 * a), FontStyle.Bold);
                        button2.Location = new Point(Convert.ToInt32(713 * a), Convert.ToInt32(418 * b));
                        button2.Size = new Size(Convert.ToInt32(75 * a), Convert.ToInt32(23 * b));
                        button2.Font = new Font("Arial", Convert.ToInt32(8 * a), FontStyle.Bold);
                        listbox1.Location = new Point(Convert.ToInt32(363 * a), Convert.ToInt32(33 * b));
                        listbox1.Size = new Size(Convert.ToInt32(425 * a), Convert.ToInt32(381 * b));
                    }
                    if (this.Width == 816 & this.Height == 489)
                    {
                        button2.Font = new Font("Arial", 8, FontStyle.Regular);
                        button.Font = new Font("Arial", 8, FontStyle.Regular);
                    }
 
                }
            }
        }
Прикрепляю скрины на которых видно, что размер элементов формы меняется только при сильном изменении размеров формы. Почему так происходит и как сделать так чтоб размер и позиция элементов менялись вместе с размером формы.
Миниатюры
Изменение размеров элементов на форме   Изменение размеров элементов на форме   Изменение размеров элементов на форме  

Изменение размеров элементов на форме   Изменение размеров элементов на форме  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 11:09
Ответы с готовыми решениями:

Изменение размеров элементов, при изменение размеров формы
Доброго времени суток, подскажите, как в VS2016 реализовать подобное, а именно: Имеются следующая...

Изменение размеров элементов, сохраняя пропорции, при изменении размеров самой формы
Как изменять размеры элементов, сохраняя пропорции, при изменении размеров самой формы?

Изменение размеров элементов управления с изменением размеров формы
подскажите, как сделать так чтобы размер элементов управления изменялся пропорционально размерам...

Изменение размеров контролов на форме
Есть форма, на ней элементы. Если при запуске программы, изменять размеры формы, элементы остаются...

3
3 / 3 / 1
Регистрация: 07.01.2018
Сообщений: 31
24.06.2018, 11:10  [ТС] 2
Заранее спасибо!
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
24.06.2018, 20:19 3
Вы преследуете научную цель научиться вручную изменять размер контролов или ещё не изучили свойство Control.Anchor?
0
3 / 3 / 1
Регистрация: 07.01.2018
Сообщений: 31
25.06.2018, 11:41  [ТС] 4
Решил проблему вот так:
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
25
26
                        double v1, v2;
                        int o, n;
                        o = this.Width;
                        n = this.Height;
                        v1 = Convert.ToDouble(o) / 816;
                        v2 = Convert.ToDouble(n) / 489;
                        text.Location = new Point(Convert.ToInt32(v1*13), Convert.ToInt32(v2*37));
                        text.Size = new Size(Convert.ToInt32(v1 * 114 ), Convert.ToInt32(v2 * 20 ));
                        text.Font = new Font("Arial", Convert.ToInt32(v1 * 10 ), FontStyle.Bold);
                        text1.Location = new Point(Convert.ToInt32(v1 * 146), Convert.ToInt32(v2 * 37 ));
                        text1.Size = new Size(Convert.ToInt32(v1*114 ), Convert.ToInt32(v2 * 20 ));
                        text1.Font = new Font("Arial", Convert.ToInt32(v1 * 10 ), FontStyle.Bold);
                        text2.Location = new Point(Convert.ToInt32(v1 * 13 ), Convert.ToInt32(v2 * 63 ));
                        text2.Size = new Size(Convert.ToInt32(v1 * 246 ), Convert.ToInt32(v2 * 20 ));
                        text2.Font = new Font("Arial", Convert.ToInt32(v1 * 10 ), FontStyle.Bold);
                        text3.Location = new Point(Convert.ToInt32(v1 * 363 ), Convert.ToInt32(v2 * 418 ));
                        text3.Size = new Size(Convert.ToInt32(v1 * 344 ), Convert.ToInt32(v2 * 23 ));
                        text3.Font = new Font("Arial", Convert.ToInt32(v1 * 10 ), FontStyle.Bold);
                        button.Location = new Point(Convert.ToInt32(v1 * 265 ), Convert.ToInt32(v2 * 34 ));
                        button.Size = new Size(Convert.ToInt32(v1 * 85), Convert.ToInt32(v2 * 49 ));
                        button.Font = new Font("Arial", Convert.ToInt32(v1 * 8 ), FontStyle.Bold);
                        button2.Location = new Point(Convert.ToInt32(v1 * 713 ), Convert.ToInt32(v2 * 418));
                        button2.Size = new Size(Convert.ToInt32(v1 * 75 ), Convert.ToInt32(v2 * 23 ));
                        button2.Font = new Font("Arial", Convert.ToInt32(v1 * 8 ), FontStyle.Bold);
                        listbox1.Location = new Point(Convert.ToInt32(v1 * 363 ), Convert.ToInt32(v2 * 33 ));
                        listbox1.Size = new Size(Convert.ToInt32(v1 * 425), Convert.ToInt32(v2 * 381 ));
Добавлено через 3 минуты
Свойство Control.Anchor я изучил.
0
25.06.2018, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2018, 11:41
Помогаю со студенческими работами здесь

Изменение размеров таблицы на форме
Всем привет! Имеется форма в которой отображаются две таблицы, одна под другой. Возможно ли...

Изменение размеров объектов на форме мышью
Всем привет! Делаю программу на Visual C#. В программе я сделал перетаскивание нужных мне объектов:...

Изменение размеров элементов управления в рантайме
Возможно ли изменять размеры элементов управления на форме C# после запуска приложения? Например...

Динамическое изменение размеров элементов управления
На форме по вертикали горизонтально размещены DataGridView, а под ним ListView. Как сделать между...


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

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