Вернуть дочерний элемент WinForms C#

434
23 августа 2017, 14:53

Нужно вернуть дочерний элемент. Есть какой то Panel например, в нем есть несколько PictureBox, label и бог знает что еще. Мне нужно вытащить PictureBox по его Name. Может есть какой-то универсальный метод, который это реализует, потому что я нашел только Controls, который возвращает список всех дочерних элементов. Вот как я накостылил конкретно для своей задачи, но эта штука не универсальна, хотелось бы иметь метод для этих целей:

var playPause_controls = panels[currentTrack.track].Controls;//Получаю всех дочек из Panel
foreach(var playPause in playPause_controls) {
    if (playPause is PictureBox) {//Если тип PictureBox
        var pp = (PictureBox)playPause;//Костыль, т.к. не знаю как еще узнать Name
        if(Regex.IsMatch(pp.Name, "PlayPause")) {//Если имя совпадает
            pp.Image = Properties.Resources.play_button;//Действия...
            break;
        }
    }
}
Answer 1

Если вам надо вытянуть только 1 элемент в Panel, зная его имя, то можно так:

var picture = panel1.Controls.Find("pictureBox1", true).FirstOrDefault();

По порядку:

  • panel1 - наш элемент Panel.
  • .Controls - Список всех дочерних элементов.
  • .Find - Ищем в данном списке по имени.
  • .FirstOrDefault() - первый найденный элемент.
  • Так же можно явно задать тип получаемого объекта, указав в начале строки (PictureBox) (это если надо конечно).
READ ALSO
Динамическое создание элементов формы

Динамическое создание элементов формы

Недавно перешел с консоли на FormsТребуется создать приложение, которое будет парсить каталог, и в зависимости о его содержания создавать элемента...

361
Запуск проекта без CrystalReports

Запуск проекта без CrystalReports

В проекте используются элементы CrystalReportsНо в моей студии он не установлен

212
Проблема с System.Runtime.InteropServices.COMException

Проблема с System.Runtime.InteropServices.COMException

Всем доброго времени сутокСуть: Необходимо запустить скрипт COM приложения, по кнопке с сайта

305
С# - mySQL и .NET Core 2.0

С# - mySQL и .NET Core 2.0

Всем привет! Есть нужна использовать БД в проектеNET Core 2

323