Вы не можете так делать, потому что Controls [index] ожидает целое число в качестве своего параметра, но вы передаете «строку, соединенную с целым числом», она не будет работать, вместо этого, как показано ниже, она будет работать, надеюсь, что она будет работатьпомочь вам ...
foreach (Control c in this.Controls)
{
int i = 0;
if (c is TextBox)
{
while(i < 10)
{
if (c.Name == "txtTask" + i)
{
MessageBox.Show("This is textBox" + i);
}
i++;
}
}
}
РЕДАКТИРОВАТЬ:
Если условие if(c is TextBox)
не обрабатывается правильно, выполните
foreach (Control c in this.Controls)
{
int i = 0;
while (i < this.Controls.Count)
{
if (c.Name == "txtTask" + i)
{
MessageBox.Show("This is textBox" + i);
}
i++;
}
}
РЕДАКТИРОВАНИЕ 2:
Или просто, если вы хотите выполнить цикл во всех элементах управления текстовым полем на странице aspx, используйте следующую часть кода.Работает очень отлично ..
int count = 0;
foreach (Control c in this.Page.Controls)
{
foreach (Control c1 in c.Controls)
{
int i = 0;
if (c1 is TextBox)
{
while (i < 10)
{
if (c1.ID == "TextBox" + i)
{
count++;
}
i++;
}
}
}
}
Label1.Text = count + " textbox(es) has been found";