Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - VB 2011 Массивов элементов больше нет?

Ответить
Настройки темы
.NET - VB 2011 Массивов элементов больше нет?

Аватара для TRAMPLE

Пользователь


Сообщения: 79
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Раньше писал на ВБ6, а сейчас познаю 2011, и вот обнаружил что теперь нельзя делать массив из элементов. Тоесть нельзя создать кучу текстбоксов с одним именем но разными индексами, но как теперь обрабатывать их в цыклах?

У меня допустим 30 текстбоксов, потом мне надо инфу с них переписать в масив данных
раньше это было типа такого

For a=0 to 29
mass(a)=text(a).text
next

Как теперь осуществляются такие задачи?

Отправлено: 22:13, 01-12-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
ArrayList mas = new ArrayList()
Foreach(TextBox tbx in this.Controls)
{
mas.Add(tbx.Text);
}

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:39, 02-12-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для TRAMPLE

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ок, спс. Будем пробовать

Хотя, еще не попробовав возникают вопросы.
1
Цитата Delirium:
Foreach(TextBox tbx in this.Controls) »
что здесь означает tbx?
2 В какой последовательности будут обрабатывается текстбоксы
3 Я так понимаю этот код обрабатывает ВСЕ текст боксы на форме, а если мне нужны не все? Это нада помещать их в контейнер или как то так?

Последний раз редактировалось TRAMPLE, 02-12-2011 в 20:11. Причина: Дополнение


Отправлено: 20:07, 02-12-2011 | #3


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата TRAMPLE:
что здесь означает tbx? »
Это "переменная содержащая текущий ТекстБокс цикла"...

Цитата TRAMPLE:
а если мне нужны не все? »
Можно в цикле "отсеить", используя какой - либо "фильтр". Например, каждому текстбоксу в свойство Tag присвоить true если он нужен, и false - если нет.
Далее так:
ArrayList mas = new ArrayList()
Foreach(TextBox tbx in this.Controls)
{
if ((Boolean)tbx.Tag)
{
mas.Add(tbx.Text);
}
}

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:09, 02-12-2011 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата TRAMPLE:
В какой последовательности будут обрабатывается текстбоксы »
А вот это неведомо
Цитата TRAMPLE:
Это нада помещать их в контейнер или как то так? »
Если поместить их в одну Panel, то тогда надо написать
Код: Выделить весь код
foreach(TextBox tbx in myPanel.Controls)
...

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:42, 03-12-2011 | #5


Аватара для TRAMPLE

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Цитата TRAMPLE:
В какой последовательности будут обрабатывается текстбоксы »
А вот это неведомо »
Плохо, ибо если в массив нужно помещать инфу с боксов в соответствующую ячейку...
Ну типа там Текстбоксы идут в стиле (Адрес, ФИО, телефон, год рождения и тд). И должны по порядку вписывается в массив.
Я думаю что они обрабатываются либо по мере их создания, либо по свойству TabIndex что было бы правильней, но увы не проверял пока.

Вообще когда я начал вспоминать былое, я не нашел каких то кардинальных отличий по сравнению с ВБ6, ну в том плане что в принципе всеми теми способами или так сказать "тактиками" которыми я писал проги в ВБ6 можно было использовать и здесь. Это первое с чем я столкнулся, и смотрю что поменялось многое. А вот то что элементам больше нельзя задавать индексы, это все таки плохо (

Отправлено: 15:01, 03-12-2011 | #6


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


TRAMPLE, ты сам создаешь себе проблемы. Обработку данных в TextBox лучше все таки делать вручную, а не циклами. Да, это дольше, но это правильней. Несложно ведь создать массив и написать что то вроде такого:
string[10] mass;
1. При обработке ФИО -
mass[0] = tbxFio.Text;
2. телефон
mass[1] = tbxPhone.Text;

И этот код ненамного длиннее кода с циклом, но это дает тебе полный контроль над данными и индексами в массиве.

И встречный вопрос - а зачем вообще заносить это в массив?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 16:50, 03-12-2011 | #7


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


TRAMPLE, В конце концов храните "индексы" (цифры) в Tag для массива, и в цикле определяйте Tag и записывайте значение в индекс массива...

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:57, 03-12-2011 | #8


Аватара для TRAMPLE

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Delirium:
И встречный вопрос - а зачем вообще заносить это в массив? »
У меня вообще не телефоны и тд, у меня Год, месяц, день, час, минута, сикунда, долисикунда. И это все отсчитывается. Все данны вводятся в текстбокс (да это глупо, лучше сделать лейблы а для пользователя сделать отдельное окно запрос для ввода данных, но так нада, ибо пользователь должен иметь возможность в любое время остановит таймер и поменять значения) и после запуска они становятся не активны и идет отщет. Все данные с текстбоксов помещаются в массив, ну а дальше идет лесенка ифов (Т - это массив)

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

Ну это только для времени, а мне надо еще годе, месяц, день. Вот такой вот бздык.
Да, можно и без массива, но я ведь учусь )



Цитата LilLoco:
В конце концов храните "индексы" (цифры) в Tag для массива, и в цикле определяйте Tag и записывайте значение в индекс массива... »
Я об этом думал, но ведь нельзя чтобы все текстбоксы были с одним именем, а ведь в цикле имя одинаковое, меняется только индекс.

У меня даже была крейзи идея, назвать все текстбоксы типа (Box1, Box2, Box3, Box4...)
И потом

name = "box"
For a=1 to 10
name=name & а
.
.
.
.
name= "box"
next a

Дума суть понятна, типа приставляем "индекс" к имени текстбокса, ну это бред помоему ))) И насколько я помню, в ВБ6 нельзя было так делать, потому что нельзя чтобы переменная содержала имя элемента, в данном случае name.text не распознает. Тут как я понимаю можно, указав что это контрол и тд, но все равно бред... не грамотно все это (

Отправлено: 01:55, 04-12-2011 | #9


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


TRAMPLE, Я не предлагаю индексы хранить в имени TextBox`а . Почитайте повнимательнее. У каждого элемента, есть свойство Tag, в котором можно хранить все что душе угодно... Я и предлагал им воспользоваться...

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 10:38, 04-12-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - VB 2011 Массивов элементов больше нет?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Load/unload cycle count. Всё больше и больше 3..2..1... BOOM Накопители (SSD, HDD, USB Flash) 5 23-09-2021 15:45
Интерфейс - [решено] нет элементов управления Media Player Classic в превью панели задач petrov1993 Microsoft Windows 7 16 03-03-2013 10:53
Установка МФУ HP M1212 на Mandriva 2010-2011 / Rosa 2011 (проблемы) buxar Железо в Linux 14 01-10-2012 20:17
Взрывы в Метро и Аэропорту (29.03.2010) - (21.01.2011) - (11.04.2011) samara1532 Флейм 90 14-04-2011 00:09
VBA - [решено] Обработка массивов Матвик Программирование и базы данных 12 24-02-2011 16:25




 
Переход