VB 2011 Массивов элементов больше нет?
Раньше писал на ВБ6, а сейчас познаю 2011, и вот обнаружил что теперь нельзя делать массив из элементов. Тоесть нельзя создать кучу текстбоксов с одним именем но разными индексами, но как теперь обрабатывать их в цыклах?
У меня допустим 30 текстбоксов, потом мне надо инфу с них переписать в масив данных раньше это было типа такого For a=0 to 29 mass(a)=text(a).text next Как теперь осуществляются такие задачи? |
Код:
ArrayList mas = new ArrayList() |
Ок, спс. Будем пробовать
Хотя, еще не попробовав возникают вопросы. 1 Цитата:
2 В какой последовательности будут обрабатывается текстбоксы 3 Я так понимаю этот код обрабатывает ВСЕ текст боксы на форме, а если мне нужны не все? Это нада помещать их в контейнер или как то так? |
Цитата:
Цитата:
Далее так: ArrayList mas = new ArrayList() Foreach(TextBox tbx in this.Controls) { if ((Boolean)tbx.Tag) { mas.Add(tbx.Text); } } |
|
Цитата:
Ну типа там Текстбоксы идут в стиле (Адрес, ФИО, телефон, год рождения и тд). И должны по порядку вписывается в массив. Я думаю что они обрабатываются либо по мере их создания, либо по свойству TabIndex что было бы правильней, но увы не проверял пока. Вообще когда я начал вспоминать былое, я не нашел каких то кардинальных отличий по сравнению с ВБ6, ну в том плане что в принципе всеми теми способами или так сказать "тактиками" которыми я писал проги в ВБ6 можно было использовать и здесь. Это первое с чем я столкнулся, и смотрю что поменялось многое. А вот то что элементам больше нельзя задавать индексы, это все таки плохо ( |
TRAMPLE, ты сам создаешь себе проблемы. Обработку данных в TextBox лучше все таки делать вручную, а не циклами. Да, это дольше, но это правильней. Несложно ведь создать массив и написать что то вроде такого:
string[10] mass; 1. При обработке ФИО - mass[0] = tbxFio.Text; 2. телефон mass[1] = tbxPhone.Text; И этот код ненамного длиннее кода с циклом, но это дает тебе полный контроль над данными и индексами в массиве. И встречный вопрос - а зачем вообще заносить это в массив? |
TRAMPLE, В конце концов храните "индексы" (цифры) в Tag для массива, и в цикле определяйте Tag и записывайте значение в индекс массива...
|
Цитата:
If T(2) > 0 Then T(2) = T(2) - 1 ElseIf T(1) > 0 Then T(1) = T(1) - 1 T(2) = 59 ElseIf T(0) > 0 Then T(0) = T(0) - 1 T(1) = 59 T(2) = 59 Else FuckEND() End If Ну это только для времени, а мне надо еще годе, месяц, день. Вот такой вот бздык. Да, можно и без массива, но я ведь учусь ) Цитата:
У меня даже была крейзи идея, назвать все текстбоксы типа (Box1, Box2, Box3, Box4...) И потом name = "box" For a=1 to 10 name=name & а . . . . name= "box" next a Дума суть понятна, типа приставляем "индекс" к имени текстбокса, ну это бред помоему ))) И насколько я помню, в ВБ6 нельзя было так делать, потому что нельзя чтобы переменная содержала имя элемента, в данном случае name.text не распознает. Тут как я понимаю можно, указав что это контрол и тд, но все равно бред... не грамотно все это ( |
TRAMPLE, Я не предлагаю индексы хранить в имени TextBox`а . Почитайте повнимательнее. У каждого элемента, есть свойство Tag, в котором можно хранить все что душе угодно... Я и предлагал им воспользоваться...
|
Цитата:
В принципе проблема решена. Можно сказать что её как таковое и не было. Есть пути по которым можно решить данную задачу, но тем не мение, идею убрать возможность индексировать элементы считаю плохой. Если у нас программа это некий бланк, где есть множество текстбоксов, и потом данные с них нужно заносить в массив, то лучше способа чем For a=0 to 29 mass(a)=text(a).text next по моему нету. Я просто думал что может сейчас это осуществляется как то по другом, но есть только альтернативы ( |
Их нету еще с первой версии дотнета
|
Verholom, кого нет, массивов? С чего бы ради. У каждого контейнера есть интерфейс IEnumerable, который как раз и представляет собой массив тех или иных элементов. И именно наличие IEnumerable позволяет работать циклу foreach.
|
массивов элементов управления на формах! :read: :drug:
|
Время: 02:37. |
Время: 02:37.
© OSzone.net 2001-