Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
1

Размещение элементов по центру относительно ширины

24.06.2018, 17:08. Показов 7148. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Пока что я размещаю элементы так
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
CDH_TBColorRegions[i] = new TextBox()
                {
                    Visible = true,
                    Size = new Size(60, 26),
                    Location = new Point(8 + ((i % 4) * 176), 8 + ((i / 4) * 34)),
                    BackColor = Color.White,
                    ForeColor = Color.Black,
                    BorderStyle = BorderStyle.FixedSingle,
                    Font = new Font(DHE.fonts.Families[0], 14),
                    MaxLength = 4
                };
 
                СDH_PNLColor_regions.Controls.Add(CDH_TBColorRegions[i]);
 
 
                CDH_BTNColorRegions[i] = new Button()
                {
                    Visible = true,
                    Enabled = true,
                    Font = new Font(DHE.fonts.Families[0], 12, FontStyle.Bold),
                    TextAlign = ContentAlignment.MiddleCenter,
                    Size = new Size(100, 26),
                    Location = new Point(76 + ((i % 4) * 176), 8 + ((i / 4) * 34)),
                    FlatStyle = FlatStyle.Popup,
                    Text = "Задать",
                    Cursor = Cursors.Hand
                };
 
                СDH_PNLColor_regions.Controls.Add(CDH_BTNColorRegions[i]);
Это размещения относительно левой части.
Помогите как сделать размещения по центру относительно ширины в таком же порядке
То есть сделать выравнивание элементов по центру
Тут посложнее формула нужна.
Размер панели известен.
Неизестен размер всех элементов вместе взятых
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 17:08
Ответы с готовыми решениями:

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

Как поставить картинку по центру относительно всей ширины и обтекание текста слева
Как поставить картинку по центру относительно всей ширины и обтекание слева как на фото и что лучше...

Размещение по центру
У меня проблема при размещении таблицы с картинками. Их нужно разместить по центру но никак не...

Размещение нескольких блоков по центру родителя
Доброго времени суток. У меня такая проблема: есть класс родитель (wrapper) и в нутри его есть...

13
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
24.06.2018, 20:54 2
Если на форме разместить TableLayoutPanel и в него поместить Control, у которого Control.Anchor = AnchorStyles.None, то этот контрол выравняется посередине ячейки TableLayoutPanel. Такой трюк Вам не подойдёт?
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
24.06.2018, 20:56  [ТС] 3
Цитата Сообщение от meridbt Посмотреть сообщение
Если на форме разместить TableLayoutPanel и в него поместить Control, у которого Control.Anchor = AnchorStyles.None, то этот контрол выравняется посередине ячейки TableLayoutPanel. Такой трюк Вам не подойдёт?
Я не все свойства знаю чтобы его программным путем создавать
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
24.06.2018, 21:01 4
Alexandr_7,
Таблица может быть корневым элементов формы и занимать всю её площадь?
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
24.06.2018, 22:12  [ТС] 5
Цитата Сообщение от meridbt Посмотреть сообщение
Alexandr_7,
Таблица может быть корневым элементов формы и занимать всю её площадь?
У меня там восемь текстовых полей и 8 кнопок размещающихся по 4 вряд. Размещаются они на странице в PageControl
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
24.06.2018, 22:43 6
Alexandr_7,

так ?
Размещение элементов по центру относительно ширины
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
24.06.2018, 22:51 7
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
private void FillTabPage0()
        {            
            TableLayoutPanel tlp = new TableLayoutPanel()
            {
                Dock = DockStyle.Fill,
                RowCount = 4,
                ColumnCount = 4
            };
            for (int i = 0; i < 8; i++)
            {
                tlp.Controls.Add(new TextBox()
                {
                    Anchor = AnchorStyles.None
                });
            }
            for (int i = 0; i < 8; i++)
            {
                tlp.Controls.Add(new Button()
                {
                    Anchor = AnchorStyles.None,
                    Text = "Button " + i
                });
            }
            for (int row = 0; row < tlp.RowCount; row++)
            {
                tlp.RowStyles.Add(new RowStyle()
                {
                    SizeType = SizeType.Percent,
                    Height = 50
                });
            }
            for (int col = 0; col < tlp.ColumnCount; col++)
            {
                tlp.ColumnStyles.Add(new ColumnStyle()
                {
                    SizeType = SizeType.Percent,
                    Width = 50
                });
            }
            tabControl1.TabPages[0].Controls.Add(tlp);
        }
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
25.06.2018, 17:10  [ТС] 8
Цитата Сообщение от meridbt Посмотреть сообщение
Alexandr_7,
так ?
Нет. Выглядит некрасиво. Короче вот так:
Размещение элементов по центру относительно ширины

Но только по центру относительно ширины или проще говоря по центру координаты x
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
25.06.2018, 20:37 9
Лучший ответ Сообщение было отмечено Alexandr_7 как решение

Решение

Alexandr_7,

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
private void FillTabPage0()
        {
            TableLayoutPanel baseContainer = new TableLayoutPanel()
            {
                Dock = DockStyle.Fill,
                RowCount = 1,
                ColumnCount = 1,
                BackColor = Color.Black
            };
            TableLayoutPanel tlp = new TableLayoutPanel()
            {
                Anchor = AnchorStyles.Top,
                RowCount = 2,
                ColumnCount = 8,
                AutoSize = true
 
            };
            for (int i = 0; i < 8; i++)
            {
                tlp.Controls.Add(new TextBox()
                {
                    Anchor = AnchorStyles.None,
                    Width = 45
                });
                tlp.Controls.Add(new Button()
                {
                    Anchor = AnchorStyles.None,
                    BackColor = Color.LightGreen,
                    Text = "SET"
                });
            }            
            for (int row = 0; row < tlp.RowCount; row++)
            {
                tlp.RowStyles.Add(new RowStyle(SizeType.AutoSize));           
            }
            for (int col = 0; col < tlp.ColumnCount; col++)
            {
                tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
            }
            baseContainer.Controls.Add(tlp);
            tabControl1.TabPages[0].Controls.Add(baseContainer);
        }
1
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
25.06.2018, 20:58  [ТС] 10
Только не понятно а где растояние между элементами указывается хотя все работает как надо
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
25.06.2018, 22:22 11
Alexandr_7,

Здесь две таблицы. Первая, baseContainer, занимает всю площадь tabPage. Вторая, tlp, задаётся с авторазмером, то есть, ширина и высота подгоняются по размерам дочерних контролов. Вторая таблица является дочерним элементом первой, а так как её Anchor == Top, то вторая таблица выравнивается по центру верхней границы первой таблицы. Если контролы надо раздвинуть пошире, можно воспользоваться свойствами Margin или Padding
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
26.06.2018, 22:09  [ТС] 12
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
            var baseContainer = new TableLayoutPanel()
            {
                Dock = DockStyle.Fill,
                RowCount = 1,
                ColumnCount = 1,
                BackColor = Color.Transparent
            };
            var tlp = new TableLayoutPanel()
            {
                Anchor = AnchorStyles.Top,
                RowCount = 2,
                ColumnCount = 8,
                AutoSize = true
 
            };
 
 
            for (int i = 0; i < 8; i++)
            {
 
                CDH_TBColorRegions[i] = new TextBox()
                {
                    Visible = true,
                    Size = new Size(60, 26),
                    //Location = new Point(8 + ((i % 4) * 176), 8 + ((i / 4) * 34)),
                    BackColor = Color.White,
                    ForeColor = Color.Black,
                    BorderStyle = BorderStyle.FixedSingle,
                    Font = new Font(DHE.fonts.Families[0], 14),
                    MaxLength = 4
                };
 
                tlp.Controls.Add(CDH_TBColorRegions[i]);
                //СDH_PNLColor_regions.Controls.Add(CDH_TBColorRegions[i]);
 
                CDH_PBColorRegions[i] = new PictureBox()
                {
                    Visible = true,
                    Size = new Size(26, 26),
                    BackColor = Color.White,
 
                };
 
                tlp.Controls.Add(CDH_PBColorRegions[i]);
 
                CDH_BTNColorRegions[i] = new Button()
                {
                    Visible = true,
                    Enabled = true,
                    Font = new Font(DHE.fonts.Families[0], 12, FontStyle.Bold),
                    TextAlign = ContentAlignment.MiddleCenter,
                    Size = new Size(100, 26),
                    //Location = new Point(76 + ((i % 4) * 176), 8 + ((i / 4) * 34)),
                    FlatStyle = FlatStyle.Popup,
                    Text = "Задать",
                    Cursor = Cursors.Hand
                };
 
                CDH_BTNColorRegions[i].EnabledChanged += btn_EnabledChanged;
 
                btn_EnabledChanged(CDH_BTNColorRegions[i], new EventArgs());
 
                //СDH_PNLColor_regions.Controls.Add(CDH_BTNColorRegions[i]);
 
                tlp.Controls.Add(CDH_BTNColorRegions[i]);
            }
 
            for (int row = 0; row < tlp.RowCount; row++)
            {
                tlp.RowStyles.Add(new RowStyle(SizeType.AutoSize));
            }
            for (int col = 0; col < tlp.ColumnCount; col++)
            {
                tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
            }
 
            baseContainer.Controls.Add(tlp);
            СDH_PNLColor_regions.Controls.Add(baseContainer);
Стоило мне добавить 3 элемент (CDH_PBColorRegions[i]) как все стало съзжать

Уменьшение размера кнопки не помогает. Что делать

Понял как исправить.
Миниатюры
Размещение элементов по центру относительно ширины  
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 578
26.06.2018, 22:14 13
RowCount, ColumnCount
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
29.06.2018, 14:17  [ТС] 14
Как разместить элементы по 3 штуки в ряд 8 рядов по центру но с прокруткой которая следует после элементов с отступом
0
29.06.2018, 14:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2018, 14:17
Помогаю со студенческими работами здесь

Размещение блоков по центру (как на картинке)
Короче... начал пилить сайт, есть парочка вопросов... 1. хочу сделать как на картинке 2....

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

Размещение меню по центру ! (резиновая верстка)
Всем привет. Сразу к делу. В футере есть простое горизонтальное меню, нужно разместить его по...

Ограничение количества символов в TextBox относительно его ширины
Всем привет! Может кто нибудь подскажет? Мне нужно чтобы в текстбокс вмещалось столько...


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

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