Существуют ли какие-либо утилиты для перечисления всех компонентов WinForm? - PullRequest
2 голосов
/ 05 апреля 2011

Наш предыдущий разработчик использовал плагин (Infragistics) для создания компонентов пользовательского интерфейса (кнопки, вкладки, доки, метки и т. Д.), Но для этого требуется, чтобы были включены все его библиотеки DLL.

Я хочу преобразовать это в базовый WinForm с «стандартными» компонентами пользовательского интерфейса без использования Infragistics (меньшая установка - почти без DLL).

Мне было интересно, есть ли инструмент / плагин, который будет перечислять свойство Name (возможно, больше) всех компонентов / элементов в данной WinForm?

C # MVS2008

Ответы [ 3 ]

5 голосов
/ 05 апреля 2011

Он встроен в Visual Studio. Вид + (Другие окна) + Структура документа. Откройте форму в режиме дизайна. Он показывает список всех элементов управления и компонентов, которые у вас есть в форме с именем и типом.

0 голосов
/ 05 апреля 2011

Ну, вы можете очень легко создать такой инструмент самостоятельно, вот пример на C # того, как получить список всех элементов управления WinForm:

    public static List<Control> FindAllControls(Control container)
    {
        List<Control> controlList = new List<Control>();
        FindAllControls(container, controlList);
        return controlList;
    }

    private static void FindAllControls(Control container, List<Control> ctrlList)
    {
        foreach (Control ctrl in container.Controls)
        {
            if (ctrl.Controls.Count == 0)
                ctrlList.Add(ctrl);
            else
                FindAllControls(ctrl, ctrlList);
        }
    }

Конечно, вы должнысделайте вызов var lst = FindAllControls(theForm) где-нибудь в вашей программе и обработайте результаты.

0 голосов
/ 05 апреля 2011

Скорее всего, была причина, по которой предыдущий разработчик использовал Infragistics. Эти библиотеки элементов управления предлагают больше функциональных возможностей, чем стандартные элементы управления WinForms. Если он использовал эту расширенную функциональность, вы не сможете просто заменить их, потому что в элементе управления WinForms нет соответствующей функциональности. Включение библиотек DLL на самом деле не проблема, и если это так, просто объедините их в свой EXE-файл, используя ilmerge ... Это уменьшит количество файлов, которые необходимо развернуть.

...