Значение аргумента SearchAllChildren в методе Controls.Find

Я использую метод Forms.Controls.Find для поиска дочерних элементов управления родительского элемента управления. Метод имеет 2 аргумента; (Ключ, SearchAllChildren). Я знаю, что аргумент Key сравнивает строки имен дочерних элементов управления и заполняет возвращаемый массив элементами управления с совпадающими именами. Однако я не знаю значения аргумента SearchAllChildren.

В документации MSDN сказано: true для поиска всех дочерних элементов управления; в противном случае ложно. Что это значит? В любом случае, он не будет искать все дочерние элементы управления? Это для того, чтобы контролировать, является ли поиск рекурсивным? Итак, если это правда, то поиск будет проходить через детей всех детей и всех детей детей детей и т. д., а если ложь, то он будет проходить только через первый уровень детей?

Спасибо,


person Ian    schedule 09.01.2013    source источник


Ответы (1)


Controls.Find("name", false) будет искать только прямых потомков.

Controls.Find("name", true) будет искать дочерние элементы управления и рекурсивно искать все дочерние элементы управления и т. д.

Документы для этого метода действительно плохие. Пришлось искать в поиске, чтобы быть абсолютно уверенным в разнице.

person Samuel Neff    schedule 09.01.2013
comment
Спасибо. Я предполагаю, что аргумент должен называться SearchAllDescdents или SearchChildrenRecursively. Когда оно ложно, метод ищет всех детей, когда оно истинно, он ищет детей, внуков, правнуков и т. д. - person Ian; 09.01.2013
comment
@Ian, согласно собственным рекомендациям MS по проектированию библиотеки классов, это вообще не должно быть логическим значением. Это должно быть перечисление вроде FindControls.SearchDirectChildren и FindControls.SearchAllDescendants или что-то подобное. К сожалению, после создания API его довольно сложно изменить. - person Samuel Neff; 10.01.2013