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

Как программно добавить кнопки на элемент panel?

17.01.2018, 21:11. Показов 19076. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как программно добавить кнопки на элемент типа panel?
У меня на форме есть panel, в нее мне нужно добавить массив из кнопок. Вот как программно организовать этот массив, дать кнопкам определенный внешний вид и добавить в panel?

PS элемент типа panel называется listik, который находится на форме Form1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.01.2018, 21:11
Ответы с готовыми решениями:

Как программно добавить элемент на форму
Подскажите, как программно добавить элемент на форму? #include "dartedit.h" #include...

Как программно добавить Value в списковый элемент управления?
With cboChRechi.Items .Add ('Существительное') .Add ('Прилагательное') .Add...

Как в подчиненную форму программно добавить элемент управления?
Всем добрый день. Собственно проблема - заголовк. Не могу никак из кода программы добавить элемент...

Как программно добавить элемент управления внутрь рамки?
Доброе время суток. Подскажите, как программно добавить элемент управляния, например OptionButton,...

7
35 / 34 / 25
Регистрация: 11.04.2015
Сообщений: 129
17.01.2018, 21:30 2
Лучший ответ Сообщение было отмечено Kostik654 как решение

Решение

C#
1
2
3
4
5
6
7
            for (int i = 0; i < 3; i++)
            {
                Button btn = new Button();
                btn.Text = "btn" + i;
                btn.Location = new Point(i * 50, i * 50);
                listik.Controls.Add(btn);
            }
Если добавляете из массива кнопок то так:
C#
1
2
3
4
5
6
7
8
9
10
11
List<Button> btns = new List<Button>()
            {
                new Button() {Text = "firstButton", Location = new Point(50,50) },
                new Button() {Text = "secondButton", Location = new Point(100,100) },
                new Button() {Text = "thirdButton", Location = new Point(100,100) },
            };
            for (int i = 0; i < 3; i++)
            {
                if (i < btns.Count)
                listik.Controls.Add(btns[i]);
            }
С видом должны разобраться. В этом вам помогут свойства самой кнопки. btn.Свойство;
2
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
17.01.2018, 21:47 3
Цитата Сообщение от Harold Посмотреть сообщение
Если добавляете из массива кнопок
C#
1
listik.Controls.AddRange(btns.ToArray());
1
35 / 34 / 25
Регистрация: 11.04.2015
Сообщений: 129
17.01.2018, 21:54 4
Даценд, согласен так лучше, просто новички лучше видят через цикл.
C#
1
2
3
4
5
 for (int i = 0; i < 3; i++)
            {
                if (i < btns.Count)
                listik.Controls.Add(btns[i]);
            }
Это вообще можно поменять на:
C#
1
2
3
4
for (int i = 0; i < btns.Count; i++)
            {
                listik.Controls.Add(btns[i]);
            }
Просто для глаз)
Может вы мне с моей темой сможете помочь?)
2
0 / 0 / 1
Регистрация: 02.03.2017
Сообщений: 129
17.01.2018, 22:10  [ТС] 5
А как каждой кнопке массива добавить свое событие клика и программно его менять? Например, чтобы, нажав на butn[3] ее координаты менялись или, нажав butn[11], ее цвет менялся
0
35 / 34 / 25
Регистрация: 11.04.2015
Сообщений: 129
17.01.2018, 22:18 6
Kostik654, создавать для каждой кнопки отдельный обработчик как-то страшно, вам не кажется?
Представьте что у вас их сотня, сколько там кода будет..
Я предлагаю создать один обработчик для всех кнопок, к тому же как вы говорите они должны выполнять схожие операции.
C#
1
btns[i].Click += имя обработчика события;
1
0 / 0 / 1
Регистрация: 02.03.2017
Сообщений: 129
17.01.2018, 22:29  [ТС] 7
а как этому обработчику передавать какие-нибудь значения? Например, значение переменной string
Вот обработчик
C#
1
2
3
4
5
       private void but_Click(object sender, EventArgs e)
        {
   MessageBox.Show();
 
        }
Мне нужно, чтобы выводился в сообщении индекс массива нажатой кнопки, вот как мне его передать этому обработчику?

Добавлено через 6 минут
private void but_Click(object sender, EventArgs e)
{
Button mybutton = (sender) as Button;
MessageBox.Show(mybutton.Name);

}

Решил сделать так -- имени кнопки дал значение переменной и потом получил ее значение в обработчике через свойство того же name нажатой кнопки
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
17.01.2018, 22:34 8
Лучший ответ Сообщение было отмечено Kostik654 как решение

Решение

Цитата Сообщение от Kostik654 Посмотреть сообщение
чтобы выводился в сообщении индекс массива нажатой кнопки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
List<Button> btns;
private void button1_Click(object sender, EventArgs e)
{
    btns = new List<Button>()
    {
        new Button() {Text = "firstButton", Location = new Point(50,50) },
        new Button() {Text = "secondButton", Location = new Point(100,100) },
        new Button() {Text = "thirdButton", Location = new Point(100,100) },
    };
    for (int i = 0; i < 3; i++)
    {
        listik.Controls.Add(btns[i]);
        btns[i].Click += btns_Click;
    }
}
 
void btns_Click(object sender, EventArgs e)
{
    MessageBox.Show(btns.IndexOf(sender as Button).ToString());
}
1
17.01.2018, 22:34
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2018, 22:34
Помогаю со студенческими работами здесь

Как программно добавить элемент в уже существующий layout?
как программно добавить элемент в уже существующий layout? например при нажатии кнопки. нужно...

Привязка к коллекции: как программно (скажем, из обработчика кнопки) добавить в эту коллекцию новый item
Здравствуйте! Есть пример из MSDN о привзке к коллекции. Не могу сообразить как программно...

Программно добавить кнопки на кнопки на tabcontrol
Всем привет! На форме добавлен TabControl, на который добавляются вкладки и кнопки согласно...

Простой вопрос (не бейте меня). Как программно добавить элемент на форму?
Есть форма, надо добавить на нее новый элемент (кнопку, текст...)


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
Что такое паттерны программировани­я и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
Что такое javascript:void­­(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru