powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить коллекцию компонентов формы
10 сообщений из 10, страница 1 из 1
Получить коллекцию компонентов формы
    #38195861
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите пожалуйста как получить коллекцию/массив всех компонент формы? А точнее мне нужно добраться до содержимого "подвала", невизуальных компонентов, а не визуальных контролов.
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38195901
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Thor234,

А зачем?
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38195935
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача найти в приложении все объекты являющиеся наследниками класса DataSet
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38195986
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thor234Задача найти в приложении все объекты являющиеся наследниками класса DataSet
ну если в лоб , то наверно как то так.
перебираем всё что есть и ищем совпадение.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   void intro()
           {
            System.Reflection.Assembly A = Assembly.GetExecutingAssembly();
            var A2 = A.GetModules();
            var T2 = A2[0].GetTypes();
            foreach (var T in T2)
                if (T.IsClass && IsDS(T, "System.Data.DataSet"))
                {
                    // T-класс унаследован от DS
                }
            }  
               bool IsDS(Type T, string LookingClass)
        {
            if (T.BaseType == null || T.BaseType.FullName == "System.Object") return false;
            if (T.BaseType.FullName == LookingClass)
                return true;
            else
                return IsDS(T.BaseType, LookingClass);
        }
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197222
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thor234Добрый день. Подскажите пожалуйста как получить коллекцию/массив всех компонент формы? А точнее мне нужно добраться до содержимого "подвала", невизуальных компонентов, а не визуальных контролов.

все компоненты формы (если ты их добавляешь с помощью дизайнера) являются полями класса формы, следовательно их можно поднять используя рефлекшн
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197295
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

а где тут объекты?
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197327
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.beg-in-er,

а где тут объекты?
ну что вы думаете , по субботам работаю???
ТС нужно : "Задача найти в приложении все объекты являющиеся наследниками класса DataSet"
потому надо для начала получить список таких классов.
уж потом рефлексией выдёргивать экземпляры полученных классов DataSet, MyDataSet, MyDataSet2
по полям и свойствам, и получать их значения.
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197364
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

а зачем? что мешает просто с помощью as или is проверить? Список таких классов тут ни разу не нужен.
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197381
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouchbeg-in-er,

а зачем? что мешает просто с помощью as или is проверить? Список таких классов тут ни разу не нужен.
ну да , стормозил. через is прощее.
мне подумалось , что через параметр-"имя класса" будет как то проще.
...
Рейтинг: 0 / 0
Получить коллекцию компонентов формы
    #38197395
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
var form1 = new Form1();

var dsfields = form1.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
    .Where(x => x.FieldType.IsSubclassOf(typeof(DataSet)) || x.FieldType == typeof(DataSet)).ToList();
var dsvalues = dsfields.Select(x => x.GetValue(form1)).ToList();


Я бы сделал как то так)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить коллекцию компонентов формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]