Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/41: Рейтинг темы: голосов - 41, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218

Массив кнопок

18.03.2019, 17:49. Показов 8337. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сформировал массив кнопок
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
   Button[] but = new Button[id_room];
 
                        for (int k = 0; k <id_room; k++)
                        {
                            
                                but[k] = new Button();
                                but[k].Text = Convert.ToString(Reader1["Номер комнаты"]);
                                but[k].Left = i * 45 + 15;
                                but[k].BackColor = Color.White;
                                but[k].Size = new Size(40, 40);
                                this.Controls.Add(but[k]);
                            
                        }
но кнопки формируются в длину. Как реализовать,чтобы например каждая 6-ая кнопка начиналась с нового ряда? + желательно чтобы все по центру было.
Двумерный массив but[k,j] не предлагайте.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2019, 17:49
Ответы с готовыми решениями:

Создать массив кнопок, для каждой кнопок будет одинаковый обработчик
Всем привет! Нужна помощь в реализации такой задачи. Нужно создать массив кнопок, для каждой кнопок будет одинаковый обработчик...

Массив кнопок, перемещение кнопок
По клику на button1 вызывается массив кнопок Button bt = new Button; private void button1_Click(object sender, EventArgs e) ...

массив кнопок
Суть следующая.пользователь вводит размерность - создаеться массив кнопок - пользователь жмет на любую из них - выдаються координаты етой...

14
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
18.03.2019, 19:01
KAPATEJlb, У вас же цикл, проверяйте когда k дойдет до шестой кнопки, меняйте координаты.
0
17 / 12 / 6
Регистрация: 29.03.2018
Сообщений: 90
18.03.2019, 19:11
KAPATEJlb,

Цитата Сообщение от KAPATEJlb Посмотреть сообщение
каждая 6-ая кнопка начиналась с нового ряда
то есть, строки?

Цитата Сообщение от KAPATEJlb Посмотреть сообщение
Двумерный массив but[k,j] не предлагайте.
а вложенные циклы или проверки?

Можно через переменную задавать Top для кнопок при выходе из вложенного цикла или [номер кнопки]%6==0 увеличивать ее значение
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
18.03.2019, 19:26
Лучший ответ Сообщение было отмечено KAPATEJlb как решение

Решение

Цитата Сообщение от KAPATEJlb Посмотреть сообщение
Как реализовать,чтобы например каждая 6-ая кнопка начиналась с нового ряда?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            Button[] but = new Button[15];
 
            int y = 10, x = 10;
            int buttonWidth = 30;
            int buttonHeight = 30;
 
            for (int k = 0; k < 15; k++)
            {
                but[k] = new Button();
                but[k].Text = (k+1).ToString();
                but[k].Location = new Point(x, y);
                but[k].Size = new Size(buttonWidth, buttonHeight);
                this.Controls.Add(but[k]);
                if ((k+1) % 5 == 0)
                {
                    x = 10;
                    y += buttonHeight + 2;
                }
                else
                    x += buttonWidth + 2;
            }
1
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
18.03.2019, 22:07  [ТС]
Цитата Сообщение от asn31337 Посмотреть сообщение
C#
спасибо,все работает

Добавлено через 7 минут
Цитата Сообщение от asn31337 Посмотреть сообщение
C#
а как по центру вывести не подскажете?
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
18.03.2019, 22:27
Цитата Сообщение от KAPATEJlb Посмотреть сообщение
а как по центру вывести не подскажете?
рассчитывайте координаты в зависимости от размера формы
0
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
19.03.2019, 11:10  [ТС]
asn31337,
Цитата Сообщение от asn31337 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
if ((k+1) % 5 == 0)
                {
                    x = 10;
                    y += buttonHeight + 2;
                }
                else
                    x += buttonWidth + 2;
            }
вопросик возник,уже пару часов сижу.
дело в том,что кнопки создаются с помощью массива ,который берется из базы данных. Название кнопки - id из базы
То есть в моем коде - все выводилось в линию ,И там где не должно было быть кнопки - ее не было
в вашем коде ,он создает кнопки по длине массива(например 25 кнопок) и например массив идет 1,2,4,5.. он создает кнопки так: 1,2,2,4,5 - ,то есть добавляет кнопку с еще одной 2(или любой другой цифрой перед ней..в чем проблема?
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
19.03.2019, 15:50
KAPATEJlb, если честно, не очень понял суть проблемы... кнопки должны идти не подряд, а с пропусками или что?
0
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
19.03.2019, 19:35  [ТС]
Цитата Сообщение от asn31337 Посмотреть сообщение
если честно, не очень понял суть проблемы... кнопки должны идти не подряд, а с пропусками или что?
расписал проблему подробнее + прикрепил проект,посмотрите пожалуйста.

Есть проект ( прикреплен) сделал массив кнопок,что бы они создавались по количеству id из базы и с текстом в виде номера также из базы. Все выводилось правильно - но в одну линию(на скрине) - помогли сделать так.чтобы все выводилось как мне удобно,но появилась ошибка ,что создаются все кнопки по строкам из базы ,причем номера повторяются.
То есть в базе например есть 10 записей: 1,2,3,4,5,6,7,8,9,10. Соответствуют требованиям только 1,3,5,6,9,10 - и должно создаться это кол-во кнопок с этими названиями в линию создавалось только 6 кнопок с этими названиями все верно.
Когда сделал в строчки - мне нужно вывести также в кнопках - 1,3,5,6,9,10 ,но создаются все 10 кнопок ,и названия на них уже 1,3,3,5,5,6,9,9,10 - то есть неправильно . В проекте есть комментарию,прошу помощи,ибо не вижу ошибки
Миниатюры
Массив кнопок  
Вложения
Тип файла: rar Переделано.rar (674.7 Кб, 19 просмотров)
0
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
19.03.2019, 22:55
Цитата Сообщение от KAPATEJlb Посмотреть сообщение
расписал проблему подробнее + прикрепил проект,посмотрите пожалуйста.
В общем, посмотрел Ваш код... Если честно, совершенно не понял логики... Что то у Вас там намудрено, просто жуть. Но, если я правильно понял суть задачи, то код должен быть примерно таким:
Кликните здесь для просмотра всего текста
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
        private void komnata_Load(object sender, EventArgs e)
        {
            DB = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;" +
                     @"Data Source=|DataDirectory|\\bin/debug/dom.accdb");
 
            DB.Open();
            DataTable dt = new DataTable();
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * from Комнаты WHERE Этаж = 1", DB);
            da.Fill(dt);
            DB.Close();
 
            int y = 10, x = 10;
            int buttonWidth = 40;
            int buttonHeight = 40;
 
            if (dt != null)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Button but = new Button();
                    but.Text = dt.Rows[i][1].ToString();
                    but.Location = new Point(x, y);
                    but.Size = new Size(buttonWidth, buttonHeight);
 
                    if (int.Parse(dt.Rows[i][4].ToString()) == 0)
                    {
                        but.BackColor = Color.Red;
                    }
                    else
                    {
                        but.BackColor = Color.LawnGreen;
                    }
                    this.Controls.Add(but);
 
                    if ((i + 1) % 5 == 0)
                    {
                        x = 10;
                        y += buttonHeight + 2;
                    }
                    else
                        x += buttonWidth + 2;
                }
            }
        }
1
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
19.03.2019, 22:57
Лучший ответ Сообщение было отмечено KAPATEJlb как решение

Решение

Результат:
1
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
20.03.2019, 08:23  [ТС]
Цитата Сообщение от asn31337 Посмотреть сообщение
Результат:
огромное спасибо, все работает ,да еще и код упрощен,очень помогли начинающему программисту
0
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
21.03.2019, 17:27  [ТС]
тест,решено
0
0 / 0 / 0
Регистрация: 13.05.2024
Сообщений: 2
13.05.2024, 18:54
Цитата Сообщение от asn31337 Посмотреть сообщение
Как реализовать,чтобы например каждая 6-ая кнопка начиналась с нового ряда?
можете объяснить для чего нужен "k+1" и объяснить if и else
0
3257 / 3270 / 556
Регистрация: 17.02.2019
Сообщений: 5,178
13.05.2024, 19:13
Цитата Сообщение от hetog Посмотреть сообщение
можете объяснить для чего нужен "k+1"
объясняю чтоб текст в кнопке был не с нуля а с единицы и т.д.
Цитата Сообщение от hetog Посмотреть сообщение
и объяснить if и else
чтобы в каждом ряде было по пять кнопок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2024, 19:13
Помогаю со студенческими работами здесь

Массив кнопок в С++
Здравствуйте! Не могу создать массив кнопок или других контролов в С++. Пробовал подогнать код C# под С++,но почему-то не работает. ...

Массив кнопок
Нужно чтобы цвет задавался кнопке числа Random. Создал массив но не могу изменить цвет через массив! using System; using...

Массив из кнопок
Есть двумерный массив из кнопок (10х10), создаваемых программно Button but = new Button; public Form1() ...

Двумерный массив кнопок
Есть данный код: public Form1() { InitializeComponent(); InitButtons(); } ...

Массив кнопок возможно?
Подскажите, а возможно ли создать массив кнопок например 8 на 8, чтобы обращаться к каждой кнопке по индексу? Пример: Мне нужно чтоб...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru