Вопрос № 166516: Здравствуйте! Самостоятельно изучаю Visual Basic 2008. Возникло пара вопросов: 1) На форме есть две группы Textbox'ов (но не только одни они). При загрузке формы одна группа заполняется данными из файла а в другую пользователем вносятся новые ...
Вопрос № 166.516
Здравствуйте! Самостоятельно изучаю Visual Basic 2008. Возникло пара вопросов: 1) На форме есть две группы Textbox'ов (но не только одни они). При загрузке формы одна группа заполняется данными из файла а в другую пользователем вносятся новые данные. Все это высчитывается и новые данные сохраняются опять в файл. В VB6 Textbox'ы заполнял в цикле, к примеру вот так:
For i = 1 To 16 Textbox(i).Text = x Next i
В VB2008 это не проходит, там вроде надо как-то через коллекции. Как
это сделать?
2) Как прочитать строки из файла ресурсов и присвоить значения переменным (опять же, в цикле)? Заранее спасибо.
Отправлен: 05.05.2009, 14:44
Вопрос задал: Mr.grey (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Hankir
Здравствуйте, Mr.grey! За место TextBox(i).Text = x используй list.Add(""); Где переменная list - это List<String> list = new List<String>(); Затем после цикла сделай так: textBox1.Lines = list.ToArray();
В итоге код будет похож примерно на этот: List<String> list = new List<String>(); for (Int32 i = 1; i <= 16; i++) list.Add(i.ToString()); textBox1.Lines = list.ToArray();
Код на C#, но думаю не составит труда переправить на Visual Basic,
причём свойство textBox1.MultiLine должно иметь значение true;
Ответ отправил: Hankir (статус: 1-й класс)
Ответ отправлен: 05.05.2009, 14:59
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248669 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо. Но это вроде как "много строк записать в один TextBox", а мне нужно "по одной строке в каждый". Другими словами: как в цикле перебрать все TextBox'ы ?
Отвечает: DrakoN
Здравствуйте, Mr.grey! Ваши текстбоксы должны находиться внутри одного контрола (групбокса или формы), тогда этот метод действенен и прост. В остальных случаях решения существуют но ввиду сложности писывать не стану.
Итак. Ваш старший контрол имеет свойство "Сontrols" - которое возвращает коллекцию всех контролов которые в нем содержаться. Можно использовать фильтр по типу
Код:
If ( typeof(Controls(i)) == typeof(TextBox))
Можно по имени
Код:
if (Controls(i).Name.Contains("txt"))
div>
Далее у каждого из них в конце может быть число. И скажем следующая коснтрукция для полной идентификации.
Есть альтернатива
у каждого контрола есть свойство Tag. Забейте его ключами например "key1, key2"...итд...
и далее
Код:
foreach (Control CL in ParentControl.Controls) Switch CL.Tag case: "key1" .....
Что касаеться ресурсов тема примерно та же. Вы вычитываете обект позволяющий получить доступ и далее по ключю их читаете через свитч, или через номер. Это уже вам решать.
Удачи
--------- От Винта!
Ответ отправил: DrakoN (статус: Практикант)
Ответ отправлен: 05.05.2009, 18:27
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 248675 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.