2010-02-11 2 views
0

мой проект написан на C#. У меня есть usercontrol, который я разработал. В этом usercontrol я хочу возможность просматривать форму, которую элемент управления помещает на использование отражения, чтобы посмотреть на все остальные элементы управления в форме.Отражение в UserControl для проверки формы. C#

Как я могу это сделать? Я использовал отражение, чтобы пройти через dll, но не для чего-то подобного.

в целом: My usercontrol размещается на форме, я хочу, чтобы мой пользовательский контроль на onLoad просматривал все остальные элементы управления в форме (иногда я хочу ограничить его тем же контейнером и не всей формой, но я могу понять, что позже).

Я также открыт для идей, которые не используют отражение, если у кого-то есть.

спасибо!

EDIT:

Так я пытался просто смотреть через родительский контроль и то не работало на то, что им пытаются сделать, что моя вина плохо объясняя это выше.

Позвольте мне рассказать подробнее.

Я знаю, что в основной форме будет элемент управления ContainerListView, теперь, когда вы добавляете столбцы в контейнерный список, создаются ContainerListviewColumnHeaders. Их объявления отображаются в initalizeComponent() для формы. То, что я хочу сделать, это в моем usercontrol. Я хочу посмотреть на форму и найти все ContainerListViewColumnHeader, однако, поскольку они не имеют тип «Control» (они «Компонент»), они не отображаются в предыдущем методе. Опрос Containerlistview не является вариантом.

+0

Не можете ли вы просто получить родительскую форму с помощью свойства Parent (возможно, вам нужно будет подписаться на событие ParentChanged), а затем получить доступ к коллекции 'Controls' этой формы? – stakx

+0

О дополнительной информации, которую вы дадите в своем редактировании: AFAIK, форма не обязательно содержит ссылки на все _components_, добавленные к ней в Designer Designer. Некоторые компоненты инициализируются ссылкой на форму, но не наоборот. – stakx

+0

Итак, используя подход, предоставленный Ридом, я думаю, вы можете найти элемент управления ContainerListView, который, скорее всего, будет иметь свойство типа «Столбцы», и каждый столбец будет иметь что-то вроде «Заголовок». Просто предположение. –

ответ

5

Нет необходимости в отражении.

Посмотрите на UserControl.ParentForm - это форма, на которой размещен UserControl. Оттуда вы можете перебирать (рекурсивно) через Form.Controls.

+0

+1 ... избили меня на пару секунд. –

+0

Отредактировано мое описание, чтобы предоставить дополнительную информацию –

Смежные вопросы