powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / заполнение формы нулями
6 сообщений из 6, страница 1 из 1
заполнение формы нулями
    #38778807
voffkamc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме есть почти десяток GroupBox в которые программно добавляются textbox'ы и label'ы. Необходимо каждый из них перебрать. Сейчас это делаю перебирая каждый их GroupBox слуд. образом:
Код: vbnet
1.
2.
3.
4.
5.
For Each controls As Control In GroupBoxCanaPr.Controls
       If TypeOf (controls) Is System.Windows.Forms.TextBox Then
           abrakadabra(controls)
       End If
Next


писать эти строки относительно каждой группы - как-то хреново получается. Подскажите каким образом доработать эту функцию, чтобы подсовывать ей только названия групп, а дальше она сама перебирала?
...
Рейтинг: 0 / 0
заполнение формы нулями
    #38778843
voffkamc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже сам допер, простите за беспокойство. Может нужно будет кому-то:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
    For Each GroupBoxCntrol As Control In Me.Controls
            If TypeOf GroupBoxCntrol Is GroupBox Then
                For Each controls As Control In GroupBoxCntrol.Controls
                    If TypeOf (controls) Is System.Windows.Forms.TextBox Then
                        abrakadabra(controls)
                    End If
                Next
            End If
        Next
...
Рейтинг: 0 / 0
заполнение формы нулями
    #38778899
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voffkamcУже сам допер, простите за беспокойство. Может нужно будет кому-то:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
    For Each GroupBoxCntrol As Control In Me.Controls
            If TypeOf GroupBoxCntrol Is GroupBox Then
                For Each controls As Control In GroupBoxCntrol.Controls
                    If TypeOf (controls) Is System.Windows.Forms.TextBox Then
                        abrakadabra(controls)
                    End If
                Next
            End If
        Next



выкинь на помойку, используй рекурсию
например так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public static IEnumerable<Control> GetControls(this Control parent, Func<Control, bool> predicate=null)
        {
            return
                parent.Controls.OfType<Control>()
                    .SelectMany(c => GetControls(c))
                    .Concat(new[] { parent })
                    .Where(c => predicate == null || predicate(c));
        }
...
Рейтинг: 0 / 0
заполнение формы нулями
    #38779180
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationвыкинь на помойку, используй рекурсию

Какой бы не был короткий и всемогущий линкью, но классический перебор и читается лучше и по быстродействию не хуже, как минимум для этой задачи.
...
Рейтинг: 0 / 0
заполнение формы нулями
    #38779202
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD,
ну рекурсия тут более чем уместна и Linq с рекурсией вообще никак не связан, можете добавить 3 параметром екшен
и не возвращать перечисления, вообще то самое уместное забандить все на модель и не плодить кучу говнокода, и прозрачно чисто понятно. И конечно присоединяюсь к вопросу, если текстбоксы добавляются программно - почему им при инициализации не присвоить
начальное значение 0?
...
Рейтинг: 0 / 0
заполнение формы нулями
    #38779369
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

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


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