Member 13224949 Ответов: 1

Этот код отключает все элементы управления в форме, но я хочу отключить только текстовое поле в форме


общественного недействительными DisableControl(контроль кон)
{
foreach(управление c в con.Управления)
{
против.Enabled = false;

}
}

Что я уже пробовал:

метод отключения только текстового поля в форме

1 Ответов

Рейтинг:
1

OriginalGriff

Код тот же, но вам нужно проверить "это текстовое поле?" внутри вашего цикла:

foreach(Control c in con.Controls)
    {
    if (c is TextBox)
        {
        c.Enabled = false;
        }    
    }


Цитата:
Может ли это работать, когда мое текстовое поле находится в панели

Зависит от того, что вы передаете своему методу: если это форма, то она не будет - коллекция Form.Controls содержит панель и панель.Коллекция элементов управления содержит текстовое поле, поэтому оно не будет найдено.
Если это панель, которую вы проходите, то она будет.

Если вы хотите отключить текстовое поле "где-то в элементе управления на форме", то вам нужно вызвать свой метод рекурсивно:
public void DisableControl(Control con)
    {
    foreach(Control c in con.Controls)
        {
        DisableControl(c);
        if (c is TextBox)
            {
            c.Enabled = false;
            }    
        }
    }
Это будет работать, если вы передадите ему форму и отключите все текстовые поля в форме.


Member 13224949

Может ли это работать, когда мое текстовое поле находится в панели

OriginalGriff

Ответ обновлен.