powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
8 сообщений из 8, страница 1 из 1
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227290
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
if ((this->maskedTextBox1->MaskFull == false) |
(this->maskedTextBox2->MaskFull == false) |
(this->maskedTextBox3->MaskFull == false) |
(this->maskedTextBox4->MaskFull == false) |
(this->maskedTextBox5->MaskFull == false))

Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227303
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81зациклить
Что ты имеешь ввиду под "зацикливанием"?
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227325
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
while (true)
{
......
}
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227365
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227399
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
bool tryOut_ = false;
            for (int i = 1; i < 6; i++)
            {
                try
                {
                    MaskedTextBox control_ = (MaskedTextBox)Controls["maskedTextBox" + i.ToString()];
                    if (control_.MaskFull == false)
                    {
                        tryOut_ = true;
                        break;
                    }
                }
                catch
                { 
                
                }
            }
            if (tryOut_)
            { 
            
            }
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38227581
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81,

Код: c#
1.
2.
new[]{maskedTextBox1,maskedTextBox2,maskedTextBox3,maskedTextBox4,maskedTextBox5}
	.Any(mtb => !mtb.MaskFull);
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38610222
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
bool tryOut_ = false;
            for (int i = 1; i < 6; i++)
            {
                try
                {
                    MaskedTextBox control_ = (MaskedTextBox)Controls["maskedTextBox" + i.ToString()];
                    if (control_.MaskFull == false)
                    {
                        tryOut_ = true;
                        break;
                    }
                }
                catch
                { 
                
                }
            }
            if (tryOut_)
            { 
            
            }



Если текстбоксы непосредственно на форме, то работает нормально.
Как сделать чтобы работало если текстбоксы находятся в групбоксах?
MaskedTextBox1 находится в groupBox1
MaskedTextBox2 находится в groupBox2
MaskedTextBox3 находится в groupBox3
MaskedTextBox4 находится в groupBox4
MaskedTextBox5 находится в groupBox5
...
Рейтинг: 0 / 0
Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
    #38610362
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81, в Windows Forms нет встроенного механизма для получения всех контролов включая контролы из дочерних контейнеров. Поэтому нужно сделать такой перебор. Например в виде extension методов:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public static class ControlExtensions
{
    public static IEnumerable<Control> AllControls(this Control control)
    {
        var controls = control.Controls.Cast<Control>();
        return controls.SelectMany(ctrl => ctrl.AllControls()).Concat(controls);
    }

    public static IEnumerable<Control> AllControls<TControl>(this Control control)
            where TControl : Control
    {
        var controls = control.Controls.Cast<Control>();
        return controls.SelectMany(ctrl => ctrl.AllControls<TControl>()).Concat(controls).OfType<TControl>();
    }
}


Использование метода:
Код: c#
1.
2.
3.
4.
foreach (MaskedTextBox mtb in this.AllControls<MaskedTextBox>())
{
    // ...
}
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли как то это дело зациклить чтобы не писать 5 раз почти одно и тоже?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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