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

Составные имена

02.12.2025, 14:41. Показов 891. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть 15 объектов на форме.
Им нужно изменить цвет.

Хотелось уменьшить количество строк кода и использовать функцию при вызове которой передавался номер панели N.

C#
1
2
3
4
5
6
                panel1.BackColor = System.Drawing.Color.White;
                panel2.BackColor = System.Drawing.Color.White;
                panel3.BackColor = System.Drawing.Color.White;
                panel4.BackColor = System.Drawing.Color.White;
                panel5.BackColor = System.Drawing.Color.White;
                panel6.BackColor = System.Drawing.Color.White;.........
Посоветуйте как создать имя с применением переданного номера

К примеру
C#
1
2
panel&N.BackColor = System.Drawing.Color.White;
panel+N.BackColor = System.Drawing.Color.White;
или еще как?

Весь мозг сломал!

Версию с массивом, на форуме прочитал.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2025, 14:41
Ответы с готовыми решениями:

Составные имена элементов
Допустим, у меня есть 16 picturebox-ов названия которых picturebox1 ,picturebox2 и т.д. Можно ли...

Составные числа
Привет программерам! Подскажите, как в С# реализовать четные составные числа, а также нечетные...

Определить, простые или составные числа. Как быть с 0 и 1
Написал прогу для определения типа чисел, простое или составное, но к числам 0,1,2 нужно отдельное...

14
2277 / 1594 / 399
Регистрация: 26.06.2017
Сообщений: 4,716
Записей в блоге: 1
02.12.2025, 15:45
Вообще использовать элементы без интуитивно понятного наименования это моветон.
По сути вопроса можно получать ссылку на ЭУ по имени, например так
C#
1
2
string panelName = $"panel{n}"; // тут n это номер панели
Panel pan = (Panel)this.Controls.Find(panelName, true).First();
Важно чтобы эти номера были заданы.
4
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 26
02.12.2025, 16:05  [ТС]
Uswer, спасибо за ответ
Хорошо поставим вопрос по другому.

Есть цикл
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 1; i < 4; i++)
{
//  Вот в этом месте как нужно написать
 
panel&i.BackColor = System.Drawing.Color.White;
 
panel+i.BackColor = System.Drawing.Color.White; 
 
// или еще как?
}
0
1711 / 1363 / 164
Регистрация: 25.07.2015
Сообщений: 2,530
02.12.2025, 16:13
Если речь идет обо всех панелях на форме , то можно так
C#
1
2
3
4
5
6
7
8
Control mePanel;
foreach (Control mePanel in this.Controls)
{
    if (mePanel is Panel)
    {
        mePanel.BackColor = Color.White;
    }
}
3
run
 Аватар для I can
4914 / 4527 / 837
Регистрация: 13.04.2015
Сообщений: 9,656
02.12.2025, 16:43
Цитата Сообщение от Goldz Посмотреть сообщение
или еще как?
C#
1
2
3
4
5
6
7
          string panelName;
            for (int i = 1; i <= 5; i++)
            {
                panelName = "panel" + i;  
                Panel pan = (Panel)this.Controls.Find(panelName, true).First();
                pan.BackColor = Color.White;
            }
Добавлено через 3 минуты
Еще вариант
C#
1
2
   for (int i = 1; i <= 5; i++)
                  ((Panel) this.Controls.Find("panel" + i, true).First()).BackColor = Color.White;
3
3085 / 3220 / 556
Регистрация: 17.02.2019
Сообщений: 5,143
02.12.2025, 18:22
Моно ещё так, похож из поста 4
C#
1
2
3
4
foreach (Control panelBackColor in this.Controls.OfType<Panel>())
{
    panelBackColor.BackColor = Color.White;
}
Добавлено через 33 минуты
Goldz, ну а если Панель в Панели, то скорей подойдет второй вариант из поста 5. Ну конечно если название Panel плюс номер, пример: Panel2
Цитата Сообщение от Goldz Посмотреть сообщение
Версию с массивом, на форуме прочитал.
Ну раз прочитали, то моно ещё так сделать из поста 5
C#
1
2
3
Control[] panelcontrols = { panel1, panelNewName, panel3, panel4, panel5, panelNumberSix, panel7 };
for (int i = 0; i < panelcontrols.Length; i++)
    ((Panel)this.Controls.Find(panelcontrols[i].Name/*.ToString ()*/, true).First()).BackColor = Color.White;
3
HF
 Аватар для HF
1303 / 882 / 199
Регистрация: 09.09.2011
Сообщений: 2,590
Записей в блоге: 2
02.12.2025, 19:18
Иногда (да нет, часто), читая ответы хочется всем наставить минусов и покрыть критикой как Катафалк.

Цитата Сообщение от Goldz Посмотреть сообщение
использовать функцию при вызове которой передавался номер панели N.
Uswer, I can, Kulma, January29, хоть кто-то из вас выполнил начальные условия? ТЗ озвучено.
Мало того что даже близко не сделали, то ещё и готового кода накидали. И, учитывая что ТС вообще "ни бум бум", давать решения через свойства которых он даже не понимает - это прям ну вообще... достойно моего осуждения и награды "медвежья услуга".
1
1711 / 1363 / 164
Регистрация: 25.07.2015
Сообщений: 2,530
03.12.2025, 08:57
Цитата Сообщение от HF Посмотреть сообщение
хоть кто-то из вас выполнил начальные условия?
Во-первых, не поверите, да.
Цитата Сообщение от Goldz Посмотреть сообщение
Есть 15 объектов на форме.
Им нужно изменить цвет.
Цитата Сообщение от Goldz Посмотреть сообщение
или еще как?
Собственно по этим двум запросам ТС-у и накидали решений.
Во-вторых, это ваше заблуждение
Цитата Сообщение от HF Посмотреть сообщение
учитывая что ТС вообще "ни бум бум"
Если бы вы не поленились взглянуть на профиль ТС, то обратили бы внимание, что он с 15-года с нами и
периодически шарится в темах на плюсах (С++), т.е. не новичок, вчера открывший учебник.
Отсюда, кстати, и речь о функции, скорее всего . Не думаю, что для него будет сложностью разобраться
в предложенных решениях.
И наконец, критика - это хорошо конечно, но она имела бы какой-то вес , если бы вы вслед за ней предложили
свое решение.
Но, увы. Вашего запала хватило только на осуждение.
Как нам теперь с этим жить , ума не приложу. Ночами спать не будем... )))
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,553
03.12.2025, 09:15
Лучший ответ Сообщение было отмечено Goldz как решение

Решение

Цитата Сообщение от Goldz Посмотреть сообщение
уменьшить количество строк кода и использовать функцию при вызове которой передавался номер панели N
C#
1
2
3
4
5
6
7
8
partial class Form1
{
     // ...
     void SetPanelColor(int panelIndex, Color color)
     {
         this.Controls[$"panel{panelIndex}"].BackColor = color;
     }
}
2
HF
 Аватар для HF
1303 / 882 / 199
Регистрация: 09.09.2011
Сообщений: 2,590
Записей в блоге: 2
03.12.2025, 09:40
Цитата Сообщение от Kulma Посмотреть сообщение
Но, увы. Вашего запала хватило только на осуждение.
Запал я даже не поджигаю, если ТС даже функцию не смог создать и ни капли кода не показал.

Цитата Сообщение от Kulma Посмотреть сообщение
И наконец, критика - это хорошо конечно, но она имела бы какой-то вес , если бы вы вслед за ней предложили
свое решение.
Не нужно в таких вопросах решение. А нужно наличие любой работы по задаче - руками и головой. Когда вы работаете за GPT, к вам и отношение такое же - как к ботам.

Цитата Сообщение от Kulma Посмотреть сообщение
Во-первых, не поверите, да.
Мне чего верить или не верить. Если быть дотошным занудой, то в ТЗ было сказано : нужна функция где передаётся имя панели (ну и подозреваю что и цвет потом бы понадобился).
Значит как минимум это должна была быть Просто функция к параметром Control control и внешний код который вызывает эту функцию.
Версию с массивами он почитал, и что? Ну показали бы как список контролов в массив кинуть.

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

P.S. ну вот, что John Prick сделал - я бы назвал минимальное решение на просьбу ТСа.
0
2277 / 1594 / 399
Регистрация: 26.06.2017
Сообщений: 4,716
Записей в блоге: 1
03.12.2025, 10:41
Похоже у HF профдеформация. 99% всех ответов на форуме это лишь вектор, указывающий направление, а остальное надо додумать, переоформить. Это относится и к функции и много ещё к чему. Не нравятся вам ответы не читайте или дайте свой. Не вижу проблемы, да и ТС что-то молчит.
1
Эксперт .NET
 Аватар для Wolfdp
3781 / 1755 / 371
Регистрация: 15.06.2012
Сообщений: 6,514
Записей в блоге: 3
03.12.2025, 11:40
99% всех ответов на форуме это лишь вектор, указывающий направление
... в АДъ.

Честно говоря меня удивляет даже не решения, а что идёт работа с элементами UI через имена, и все такие "ну ок, имена так имена". ТС через неделю опять будет ломать голову "в одном методе правильно магические индексы указл, а в другом уже не работает почему-то".

Работать нужно либо через массив заранее известных панелей (и как верно подметили выше -- имена стоит выдавать осознано, а не числами), либо через привязку данных, либо хотя бы пример от Kulma с автоматической вычиткой панелей (при условии что модифицировать нужно все, и не появятся "неприкасаемые").
0
run
 Аватар для I can
4914 / 4527 / 837
Регистрация: 13.04.2015
Сообщений: 9,656
03.12.2025, 11:48
Цитата Сообщение от Wolfdp Посмотреть сообщение
все такие "ну ок, имена так имена"
Ну массив-то его не "вставил"
Цитата Сообщение от Goldz Посмотреть сообщение
Версию с массивом, на форуме прочитал.
0
2277 / 1594 / 399
Регистрация: 26.06.2017
Сообщений: 4,716
Записей в блоге: 1
03.12.2025, 11:57
Кстати, довольно часто в подобных темах опытные товарищи сразу начинают нудеть за: архитектуру приложения, использование различных паттернов, привязку данных и т.п. При этом они то правы, но вот ТС очень часто далёк от понимания глубины таких советов. И вот тут появляется дилемма - давать совет по сути вопроса или начать поучать правильному (с точки зрения отвечающего) подходу к решению даже не озвученной проблемы (мнимой, грядущей и др.).
0
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 26
04.12.2025, 03:30  [ТС]
Спасибо всем за полемику!
Цитата Сообщение от John Prick Посмотреть сообщение
this.Controls[$"panel{panelIndex}"].BackColor = color;
Лучший ответ
Позволяет составить имя из объекта + переменная
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2025, 03:30
Помогаю со студенческими работами здесь

Составные операторы присваивания
В чем смысл следующих составных операторов присваивания: ^= &amp;= |=

Как заставить составные свойства открываться полностью?
Создаю контрол. У него свойство - словарь записей, причем сама такая запись состоит из массива и...

Поля синхронного просмотра, составные и вычислимые поля
Здравствуйте! Нужно написать программу, в которой реализовано взаимодействие с БД, к курсовому...

Составные операторы присваивания
+= -= *= /= %= &amp;= |= ^= Составные операторы присваивания в сравнении с их «обычными» аналогами...

Записать следующие логические выражения (составные высказывания)
ПОмогите решить задачу на c# Задание Даны высказывания: Высказывание A: Конь - животное...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru