#c# #arrays #loops #textbox
#c# #массивы #циклы #текстовое поле
Вопрос:
у меня есть несколько текстовых полей, и я хочу просмотреть их и проверить, содержат ли они значение, и если содержат, поместить его в массив.
Текстовые поля называются txtText1, txtText2 ….txtText12. Это то, что я получил до сих пор:
for (int i = 1; i < 13; i )
{
if(txtText[i] != String.Empty)
{
TextArray[i] = Convert.ToString(txtText[i].Text);
}
}
..но txtText [i] не допускается.
Как я могу перебирать эти поля?
Ответ №1:
В идеале, для начала поместив их в массив, вместо использования нескольких отдельных переменных. По сути, вам нужна коллекция текстовых полей, верно? Поэтому используйте тип коллекции.
Вы могли бы использовать
TextBox tb = (TextBox) Controls["txtText" i];
предполагая, что их идентификаторы были указаны правильно, но лично я бы использовал коллекции, предназначенные для такого рода вещей.
Ответ №2:
Предполагая, что массив txtText содержит ссылки на объекты текстового поля, вы можете сделать это
var textArray=txtText.Where(t=>!string.IsNullOrEmpty(t.Text)).Select(t=>t.Text).ToArray();
Ответ №3:
Я не думаю, что вы можете создавать подобные объекты массива в конструкторе.
В любом случае, что вы можете сделать: вы можете создать переменную класса IEnumerable<Textbox> _textboxes
и заполнить ее всеми текстовыми полями в конструкторе.
затем позже в вашем коде вы можете просто сделать
foreach(var textbox in _textboxes)
{
Console.WriteLine(textbox.Text); // just an example, idk what you want to do with em
}
Ответ №4:
вы можете попробовать вот так….
List<string> values = new List<string>();
foreach(Control c in this.Controls)
{
if(c is TextBox)
{
TextBox tb = (TextBox)c;
values.Add(tb.Text);
}
}
string[] array = values.ToArray();
Ответ №5:
Попробуйте создать список текстовых полей вместо массива, подобного этому:
List<TextBox> myTextboxList = new List<TextBox>();
myTextBoxList.Add(TextBox1);
myTextBoxList.Add(TextBox2);
mytextBoxList.Add(TextBox3);
Затем используйте foreach для одновременного доступа к каждому элементу следующим образом:
Foreach (TextBox item in myTextboxList) {
// Do something here, for example you can:
item.Text = "My text goes here";
}