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

Поиск объектов в контейнерах

02.11.2018, 15:08. Показов 4254. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, есть проблема. Делаю шашки на C#, WinForms. Тема такая: у меня есть tablelayoutpanel,на которой я динамически создаю панели в виде клеточек белых и чёрных, и на эти панели (чёрные) я создаю ещё одни панели уже в виде шашек белых и чёрных. Так вот, мне при моменте, когда я съедаю какую-нибудь шашку нужно получить имя этой шашки. Хотел сделать foreach (Contol * in Controls) и найти среди них все имена и условиями уже обратиться к нужной шашке, чтобы удалить её. Так вот, при этом foreach не ищет все эти панели. Есть какой-нибудь метод или способ, что бы найти все объекты, созданные на форме?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2018, 15:08
Ответы с готовыми решениями:

Хранение указателей в контейнерах
Я тут на форуме читал мнение,что хранение указателей в контейнерах - это плохо. Все,кто так думает,не могли бы вы обосновать данное...

Docker компиляция js в нескольких контейнерах
Всем привет. К сожалению на форуме нет раздела для докера, поэтому пишу здесь. Имеется около 100 контейнеров (app (ninx+php-fpm)) где...

Стандартные функции поиска элементов в контейнерах
Какие есть стандартные библиотеки/ф-ции поиска в с++? Нашел find(), но не совсем понятна его работа. Как я понял, он возвращает итератор на...

12
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
02.11.2018, 19:44
Desidiam, И так не ищет ?
C#
1
2
foreach (var item in this.Controls.OfType<TableLayoutPanel>())
    MessageBox.Show(item.Name.ToString());
1
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
02.11.2018, 19:52
Лучший ответ Сообщение было отмечено Desidiam как решение

Решение

Desidiam, как по мне, то я бы завёл отдельный список объектов-шашек и
при создании и размещении шашек на tablelayoutpanel одновременно добавлял бы их в этот список.
А когда нужно удалить шашку, так удалять её из списка, а из tablelayoutpanel шашка сама пропадёт.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.11.2018, 19:58
А я бы вообще отказался от тяжёлых контейнеров и всё рисовал
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
02.11.2018, 20:03
Визуально верстать интерфейс гораздо удобнее...
0
0 / 0 / 0
Регистрация: 03.09.2018
Сообщений: 13
02.11.2018, 20:14  [ТС]
Через
foreach (var item in this.Controls.OfType<TableLayoutPanel>() )
MessageBox.Show(item.Name.ToString());
Тоже не ищет. Просто не выдаёт никаких MessageBox
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
02.11.2018, 20:17
Desidiam, Потому что у вас Panel (или как вы там шашки рисует) является children TableLayoutPanel искать нужно в ней. Проще было бы, видеть код, а не гадать
C#
1
2
foreach (Control item in tableLayoutPanel1.Controls)
   MessageBox.Show(item.Name.ToString());
0
0 / 0 / 0
Регистрация: 03.09.2018
Сообщений: 13
02.11.2018, 20:43  [ТС]
Ну.. код там достаточно большой. Могу закинуть сюда, конечно, но не хочу напрягать кого-то с разбором такого количества кода. Там есть такая особенность, что чтобы сходить на какую-то клеточку пол именем Black** я использую Black = ((Panel)sender). Ну и в чём соль. Если вводить foreach (Control intem in Black.Controls), то выведет потом имя только той шашки, которой я сходил

Добавлено через 9 минут
Уже какая-то комичная ситуация выходит. Учитель, который мне это задал (сделать шашки) не понимает как реализовать это, одногруппники тоже, к кому только не обращался. Какая-то нереальная задача оказалась для меня

Добавлено через 8 минут
А на счёт список объектов шашек...
Я раньше со списками не работал, ткните на ошибки пожалуйста)
C#
1
2
3
4
WhitePieces = new List<object>();
    WhitePiece = new Panel();
    Black.Controls.Add(WhitePiece);
    WhitePiece.Size = new Size(50, 50);
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
02.11.2018, 21:00
WhitePieces.Add(WhitePiece);
1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
02.11.2018, 21:03
Desidiam, Вам срочно нужно сюда
Архитектура ПО в WinForms (FAQ & HowTo)
и, возможно, сюда
Создание программы - ООП модель, MVP
Пока не прочитаете материал по первой ссылке, даже не беритесь за реализацию шашек.
0
0 / 0 / 0
Регистрация: 03.09.2018
Сообщений: 13
02.11.2018, 21:04  [ТС]
За ссылки, конечно, спасибо, но я шашки почти закончил. Они у меня ходят как надо, едят как надо, только вот проблема в том, что когда едят я не могу обратиться к съеденной шашке, чтобы удалить её)
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
02.11.2018, 21:10
Цитата Сообщение от Desidiam Посмотреть сообщение
За ссылки, конечно, спасибо, но я шашки почти закончил.
Выбросите Ваш код, изучите FAQ и сделайте по нормальному.
Этим вы окажете себе огромную услугу, без шуток.
0
0 / 0 / 0
Регистрация: 03.09.2018
Сообщений: 13
02.11.2018, 21:18  [ТС]
Я бы с радостью выбросил мой код, переделал бы как следует и других радостей бы наделал, если бы до сдачи курсовика не оставалось 4 дня
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2018, 21:18
Помогаю со студенческими работами здесь

Рекурсия: можно ли разместить предметы в контейнерах так, чтобы груз не выступал над контейнером?
Имеется N контейнеров высоты H. Задано множество предметов, каждый из которых имеет свою высоту. Можно ли разместить предметы в этих...

Поиск объектов в БД
Доброго времени суток. И снова вопрос. :help: Как правильно выполнить поиск в БД? Сама БД сделана в MS Access. Не могу нормально написать...

Поиск объектов на C++
Доброго времени суток. Я пишу программу для коллекционера, использую контейнер &lt;vector&gt;. При этом я пытаюсь использовать поиск по...

Поиск объектов
Дaны чeтырe oбъeктa, oписывaeмыe рaзным чиcлoм пaрaмeтрoв. Рacпoлoжeниe пaрaмeтрoв нeвaжнo. Рeaлизoвaть функцию, дeлaющую пoиск...

Поиск объектов по маске
Друзья! Есть задача: найти несколько объектов, созданные скриптом (при создании я даю нужные имена) и воздействовать на них. ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru