0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
1

C помощью массива динамически создать кнопки

01.04.2014, 22:12. Показов 2996. Ответов 33
Метки нет (Все метки)

Добрый день

Подскажите как можно с помощью массива создать кнопки(button). А, то создавать вручную 200 кнопок - не правильно.

Ну или другим, каким то способом .
 Комментарий модератора 
Одна тема - один вопрос. И разделы тоже нужно учитывать


Добавлено через 2 часа 27 минут
Один вопрос и задал.

А, на счет раздела, забыл сменить. Извиняюсь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2014, 22:12
Ответы с готовыми решениями:

Как динамически создать последовательно несколько TextBox по нажатию кнопки
Уважаемые специалисты C#! Подскажите пожалуйста, как динамически создать несколько TextBox-ов не...

Удаление динамически созданной кнопки с помощью контекстного меню
Возник вопрос удаления динамически созданной кнопки с помощью контексного меню

Как создать и запустить новую форму с помощью кнопки?
Как создать и запустить новую форму с помощью кнопки?

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый массив длинной n,второй...

33
987 / 885 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
01.04.2014, 22:17 2
C#
1
2
for (int i = 0; i < 200; i++)
    this.Controls.Add(new Button() { Name = "btn" + i.ToString() });
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 18:53  [ТС] 3
TheSpawn, спасибо, за мысль

Добавлено через 17 часов 15 минут
создает кнопку, но не прописывает ие, как объект
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 19:20 4
потому что чего ей нужно задать остальные поля

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private Button[] masBtn = new Button[200];
        public Form1()
        {
            InitializeComponent();
 
            for (int i = 0;i<200;i++)
            {
                
                masBtn[i] = new Button();
                masBtn[i].Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                masBtn[i].Location = new System.Drawing.Point(10, (i*23)+10);
                masBtn[i].Name = "button"+i;
                masBtn[i].Size = new System.Drawing.Size(75, 23);
                masBtn[i].TabIndex = i;
                masBtn[i].Text = "button"+i;
                masBtn[i].UseVisualStyleBackColor = true;
                this.Controls.Add(masBtn[i]);
 
            }
        }
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 21:30  [ТС] 5
Metall_Version,
А, что нужно сделать, что бы при запуске снова программы, сохранялись кнопки на форме?
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 21:40 6
Dimok19, в смысле в самом конструкторе в VS . никак наверное . только программно их генерить. А зачем вам?
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 21:55  [ТС] 7
ну вот оно создает 200 кнопок. Как обратится к созданной кнопке(6), что бы при нажатие менялся цвет кнопки.

так ? :

C#
1
this.masBtn[6].BackColor = System.Drawing.Color.Orange;
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 22:06 8
да. если есть какие то параметры , котроые похожие у многих кнопок , то задавать их можно также в массиве
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 22:06  [ТС] 9
C помощью массива динамически создать кнопки


делаю вот такую задачу. Продажа билетов в театре. Кнопка (место) в зрительном зале.

C помощью массива динамически создать кнопки
похожие на это
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 22:08  [ТС] 10
Metall_Version,

спасибо вам!!
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 22:12 11
чтобы сделать это по событию этой кнопки нужно создать событие.

C#
1
2
3
4
5
6
7
            masBtn[6].Click += new EventHandler(this.masBtn6_Click);
        }
 
        private void masBtn6_Click(object sender, EventArgs e)
        {
            masBtn[6].BackColor = Color.Orange;
        }
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 22:22  [ТС] 12
ага, понял.

C помощью массива динамически создать кнопки


каждый столбец - это будет новый массив ?

А, нельзя сделать как в Delphi. Массив по i, j (10 на 20). Что бы не создавать для нового столбца, новый массив.
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 22:47 13
можно двумерный сделать. можно массив массивов.
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
02.04.2014, 23:02  [ТС] 14
а, можете пжл. дать ссылку на двухмерный массив, ну или код(пример).
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.04.2014, 23:29 15
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
        private Button[,] masBtn = new Button[20,20];
 
        
        public Form1()
        {
            InitializeComponent();
 
 
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
 
                    masBtn[i,j] = new Button();
                    masBtn[i,j].Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                    masBtn[i,j].Location = new System.Drawing.Point( (i * 23)+10, (j * 23) + 10);
                    masBtn[i, j].Name = "button" + i + "_" + j;
                    masBtn[i,j].Size = new System.Drawing.Size(23, 23);
                    masBtn[i,j].Text = "button" + i+"_"+j;
                    masBtn[i,j].UseVisualStyleBackColor = true;
                    this.Controls.Add(masBtn[i,j]);
                }
            }
 
        }
можно делать несколько двумерных массивов , можно несколько разных. в общем можно как угодно )
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
03.04.2014, 22:14  [ТС] 16
как говорится " То, что Доктор прописал! "

спасибо !
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
03.04.2014, 22:32 17
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
private Button[,] lodjia = new Button[3, 16];
        private Button[,] parter = new Button[8, 18];
 
        public Form1()
        {
            InitializeComponent();
 
 
            for (int i = 0; i < 3; i++)    //создаем балконы
            {
                for (int j = 0; j < 16; j++)
                {
 
                    lodjia[i,j] = new Button();
                    lodjia[i, j].Font = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
 
                    if (j > 7)
                        lodjia[i, j].Location = new System.Drawing.Point((j * 25) + 150, (i * 25) + 10);
                    else
                        lodjia[i, j].Location = new System.Drawing.Point((j * 25) + 100, (i * 25) + 10);
 
 
                    lodjia[i, j].Name = "button" + i + "_" + j;
                    lodjia[i, j].Size = new System.Drawing.Size(25, 25);
                    lodjia[i, j].Text = Convert.ToString(j + 2);
                    lodjia[i, j].UseVisualStyleBackColor = true;
                    this.Controls.Add(lodjia[i, j]);
                }
            }
 
            for (int i = 0; i < 8; i++)    //создаем партеры
            {
                for (int j = 0; j < 18; j++)
                {
 
                    parter[i, j] = new Button();
                    parter[i, j].Font = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
 
                    if (j > 0)
                    {
                        if (j > 8)
                            if (j==17)
                                parter[i, j].Location = new System.Drawing.Point((j * 25) + 140, (i * 25) + 100);
                            else
                                parter[i, j].Location = new System.Drawing.Point((j * 25) + 125, (i * 25) + 100);
                        else
                            parter[i, j].Location = new System.Drawing.Point((j * 25) + 75, (i * 25) + 100);
                    }
                    else
                        parter[i, j].Location = new System.Drawing.Point((j * 25) + 60, (i * 25) + 100);
 
 
                    parter[i, j].Name = "button" + i + "_" + j;
                    parter[i, j].Size = new System.Drawing.Size(25, 25);
                    parter[i, j].Text = Convert.ToString(j + 1);
                    parter[i, j].UseVisualStyleBackColor = true;
                    this.Controls.Add(parter[i, j]);
                }
            }
1
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
03.04.2014, 22:51  [ТС] 18
спасибо!
Нам бы Вас, в преподаватели

Добавлено через 6 минут
Хотелось бы с вами пообщаться, (в чате)
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 43
07.04.2014, 23:09  [ТС] 19
подскажите пжл. как обратится кнопкам. Например, при нажатие на кнопку, цвет кнопки меняется.
А, то нету обработчика событий, и не знаю как сделать.
0
2144 / 1281 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
07.04.2014, 23:16 20
событие для всех кнопок делаем одно (для каждой матрицы)
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
private Button[,] lodjia = new Button[3, 16];
        private Button[,] parter = new Button[8, 18];
 
        public Form1()
        {
            InitializeComponent();
 
 
            for (int i = 0; i < 3; i++)    //создаем балконы
            {
                for (int j = 0; j < 16; j++)
                {
 
                    lodjia[i,j] = new Button();
                    lodjia[i, j].Font = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
 
                    if (j > 7)
                        lodjia[i, j].Location = new System.Drawing.Point((j * 25) + 150, (i * 25) + 10);
                    else
                        lodjia[i, j].Location = new System.Drawing.Point((j * 25) + 100, (i * 25) + 10);
 
 
                    lodjia[i, j].Name = "button" + i + "_" + j;
                    lodjia[i, j].Size = new System.Drawing.Size(25, 25);
                    lodjia[i, j].Text = Convert.ToString(j + 2);
                    lodjia[i, j].UseVisualStyleBackColor = true;
                    lodjia[i, j].Click += new EventHandler(this.lodjia_Click);    //создаем событие
                    this.Controls.Add(lodjia[i, j]);
                }
            }
             
            }
 
            private void lodjia_Click(object sender, EventArgs e)   //обработчик события , один для всех кнопок данной
матрицы
            {
                   ((Button)sender).Color = Color.Red;
 
            }
то есть мы создаем для каждой кнопки событие , и обработчик всех событий один. И чтобы понять какая кнопка вызвала событие мы явно приводим параметр события(sender) к кнопке ((Button)sender) . И дальше через точку мы можем обращаться к любым полям кнопки.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2014, 23:16

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

Создать одномерный массив, с помощью функции найти наименьший элемент массива
создать одномерный массив, с помощью функции найти наименьший элемент массива #include...

Динамически созданные кнопки
Проектирую класс для отображения графиков. Всё устройст делиться на три части: 1 класс MGraphView...

Динамически созданные кнопки
Я создал 5 кнопок. А как при нажатии на кнопку узнать ее индекс? TButton *array_btn; ...


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

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

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