![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| granit1986 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 17.6.2008 Репутация: нет Всего: нет |
Как сделать массив из одинаковых элементов на форме, скажем элементов Label, чтобы можно было обращаться к ним по индексу?
|
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: нет Всего: 10 |
Очен просто. делаеш массив Label, и помещаеш туда ссылки Label'ов,
а потом обращаешся к ним по индексу. в твоем вопросе уже есть ответ
Это сообщение отредактировал(а) SpaceSpace - 19.11.2008, 15:24 -------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| Dmitry1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.11.2008 Репутация: нет Всего: нет |
а зачем вообще такое может понадобиться?
|
|||
|
||||
| jorikdima |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
панель как контейнер использовать.
|
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: нет Всего: 10 |
а в панели разве нет своего внутреннего контейнера?
-------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| gambit |
|
||||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
Dmitry1, у тебя 50 textbox'ов на форме, тебе надо их все очистить, у тебя есть возможность
а можно
Пример корявый, но суть отражает. |
||||
|
|||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
gambit, а можно один раз написать свой FindControls<T>(Control parent, Predicate<T> p) с yield внутри. И больше никогда не заморачиваться с массивами контролов.
Вот примерно так:
Это сообщение отредактировал(а) PashaPash - 20.11.2008, 16:27 |
|||
|
||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
PashaPash, да я не спорю, можно и файл открывать в 50 строчек. К чему лишний геморой?? Данная проблема встречаеться не так часто чтобы думать над ней, писать 30 строчек кода. ИМХО излишняя сложность, которая никому не нужна.
|
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
gambit, лишняя сложность - это вмето использования готовой коллекции контролов создавать еще одну. Пример с очисткой текстбоксов - это не только твой for в 3 строчки. Это еще и создание textbox[], ручное добавление в него и в Controls одновременно, и потом непонятная синхронизация двух коллекций, проблемы с утечками памяти. Как-то слишком у тебя гемморойно для очистки текстбоксов получается. IMHO пример не то чтобы "немножко кривоватый", он решает ту же проблему намного сложнее чем FindControls. И нифига не отвечает на вопрос "а зачем вообще такое может понадобиться".
|
|||
|
||||
| granit1986 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 17.6.2008 Репутация: нет Всего: нет |
я вот помню в Visual Basic 6 при копировании элемента и вставки на ту же форму, предлагалось создать массив этих элементов и ничего не надо было писать в коде. можно было легко обращаться по индексу (:
|
|||
|
||||
| granit1986 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 17.6.2008 Репутация: нет Всего: нет |
мда... так никто ничего и не сказал нужного, а между тем всё оказалось до банального просто ((:
Это сообщение отредактировал(а) granit1986 - 7.12.2008, 19:25 |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Да просто надо понимать что Button или еще какой-нить контрол - это класс, а класс - это тип данных, а над любым типом данных можно производить стандартные операции (создавать массив, перебирать и т.п.). Ну кончено смотря что понимать под стандартными операциями
|
|||
|
||||
| SpaceSpace |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 10.4.2007 Где: Самара Репутация: нет Всего: 10 |
granit1986,
внимательно читай что тебе говорят и правильно формулируй вопросы. -------------------- Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение. 70-565 MCPD Enterprise 3.5 |
|||
|
||||
| L1729 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
SpaceSpace
помойму вопрос был задан вполне корректно, только вот вы решили с умничать в ответе, а теперь притензии к нему? не красиво так делать! |
|||
|
||||
| source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
PashaPash тебе всё что нужно по этому вопросу сказал и стандартное решение привёл и даже объяснил почему твоё "до банального просто" использовать не стоит... единственное только пример использования он не привёл. Очистить все TextBox`ы внутри groupBox1 можно, например, такой строчкой:
где ForEach, ставший уже стандартом де-факто для таких случаев, есть расширяющий метод (помести в статический класс в области видимости)
Прелесть этого способа даже не в том, что очистку текстбоксов можно провернуть с помощью одной строки, а в том, что этот способ сработает для любого набора контролов, а твой только для массива, который ты захардкодил... Это сообщение отредактировал(а) source777 - 12.12.2008, 23:54 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
| granit1986 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 17.6.2008 Репутация: нет Всего: нет |
блин, я же задал конкретный вопрос - как сделать через массив!!! если я спросил так, значит мне ТАК надо!
|
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
А с формулировкой "мне ТАК надо" тебе не на форум, а в платную тех. поддержку обращаться надо, а на форуме, если повезёт, тебе подскажут как правильно, а не как тебе "надо"(в этот раз тебе повезло - подсказали как делать правильно, но ты этого абсолютно не оценил)... Это сообщение отредактировал(а) source777 - 13.12.2008, 14:26 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
|
|||
|
||||
| nagg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: 4 Всего: 4 |
написал расширяющие методы для обьекта формы (или иного контейнера) для получения однотипных контролов в виде массива, что и требовалось создателю сабжа... Собсно курить в сторону Extension Method's, lambda-expressions... --------------------
I am the State... |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
nagg Некоторые человеки, например я, которые не часто курят, с одного перекура не вкурятся в это
видимо мы курим разную траву. Можно про использование и определение еще по проще, на пальцах. Типа это туда, это сюда... Я серьезно. Я и все те которые еще не вкурились будут очень благодарны! Ну в самом деле, если вы решились помочь, затратьте на 30 секунд по больше, ответьте более широко. А то глядя на ваш ответ, мне остается только восхищаться вашим мастерством и моим тупизмом, срочно удалить студию, сжечь книжку и никогда не произносить слово программирование... Это сообщение отредактировал(а) okaton - 13.12.2008, 22:08 |
|||
|
||||
| nagg |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: 4 Всего: 4 |
Держите себя в руках. вот вам статейка http://www.rsdn.ru/article/csharp/Csharp3_Linq.xml - тут всё "на пальцах" последовательно изложено про фичи 3его фраемворка, включая злобные расширяющие методы - после этой статьи понять коды товарища ПашиПаш не составит труда --------------------
I am the State... |
||||
|
|||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
nagg, спасибо
|
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
okaton, кстати, yield появился еще во 2-м C#. Общая цепочка примерно такая:
1. нужно перебрать все контролы определенного типа - значит foreach по Controls. 2. перебрать - значит возвращает IEnumerable 3. все - значит с рекурсией 4. раз возвращает IEnumerable - можно не искать сразу все контролы, а возвращать по одному, по мере того как вызывающий код идет по результату. 5. определенного типа - значит generic method 6. топикастер не указал версию .net - значит 3.5, можно написать метод расширения, и не передавать лишний параметр при вызове. 7. топикастер не знает, но ему понадобится возможность отсеивать "левые" результаты - значит передаем предикат. Берешь пустой класс, идешь по пунктам - получаешь примерно такой результат. |
|||
|
||||
| nagg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: 4 Всего: 4 |
для использования расширяющих методов не обязателен таргет фраемворк 3.5 - можно обойтись и 2.0ым (правда, для этого придётся чуть-чуть схитрить) --------------------
I am the State... |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
PashaPash, спасибо вам большое (+), не знаю как другие, а я буду использовать.
Раньше пользовался таким методом:
Если не затруднит, скажите пожалуйста, а как его подключить и вызвать. До ссылки (если там это описано) nagg, я еще не добрался... nagg может я спрошу какую-то глупость, а что такое топикастер? Якая хытрость существует? Договаривайте, не томите Это сообщение отредактировал(а) okaton - 14.12.2008, 16:23 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Тот, кто создал тему, ну или по английски "стартанул топик"
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
source777, про топикастер
Я не спрашивал про использование. Я спрашивал про подключение, встраивается непосредственно в мой код, или в (не знаю как по другому назвать) "файл" и его подключить к проекту. И еще я спросил про вызов (ну и заодно связь). |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Кстати только сейчас заметил, что в слове пропущено несколько букв, правильно пишется топикстартер.
Просто добавь к проекту файл с кодом:
Ну а в файле, из которого ты хочешь перебирать компоненты, добавь: using SomeUselessUtils; Всё, можно приступать к использованию, про которое ты не спрашивал... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
okaton, судя по вашим вопросам, для начала было бы неплохо почитать основы .NET, прежде чем браться за extension methods и lambda expressions.
Кроме того, ответ уже был дан -------------------- I don't need a reason being who I am... |
|||
|
||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
QryStaL, это ветка для новичков (еще) или я что-то путаю? а с умничать может любой, особенно в интернете
|
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Хочется высказать своё мнение по данному вопросу: 1) Я, например, вообще почти никогда не смотрю на название ветки, исключение когда я задаю вопрос, а не отвечаю. 2) Не надо давить на жалость, все когда-то что-то начинали, главное собственное желание разобраться, ибо как говорил Эмертон: Единственный педагогический метод, всегда и везде дающий результат, - в непрерывной учёбе и практической деятельности опираться на собственную неутомимую энергию. 3) Не надо думать, что своими ответами кто-то умничает или издевается над тобой, с большой долей вероятности это просто привычная для человека форма изложения мыслей(ведь нет повода умничать перед незнакомыми людьми), не надо обвинять кого-то, в том что он якобы обкурился, и не может объяснить так, чтобы ты понял, это очень некрасиво с твоей стороны оскорблять человека, который тебе помогает. Ведь он не знает тебя лично и каков твой уровень знаний, чтобы понять как тебе надо объяснять, и даже если поймёт он не обязан всё объяснять в мельчайших деталях, это личное право каждого изъясняться на привычном языке, однако ты должен приложить все свои силы, чтобы понять то объяснение, которое есть, а не просто требовать более понятного. Именно непонятность стимулирует умственную деятельность. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| nagg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 6.1.2008 Где: Minsk Репутация: 4 Всего: 4 |
Мне кажется трудность - в восприятии расширяющих методов - трудно не понимая что это такое, понять что достаточно просто добавить статический класс с расш. методами и они тут же доступны через обьекты, которые они собсно и расширяют
--------------------
I am the State... |
|||
|
||||
| QryStaL |
|
||||||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
По этому поводу будет уместно привести одну небольшую цитату
© Как правильно задавать вопросы
То есть вы даже не попытались прочитать статью, которую вам порекомендовали. И тон у вас нагловатый местами... -------------------- I don't need a reason being who I am... |
||||||
|
|||||||
| okaton |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 24.11.2006 Репутация: нет Всего: нет |
Хочется сказать, что я не хотел никого обидеть своими высказываниями, не все стоит воспринимать буквально. А про "курить" это вообще шутка была, цель которой была вызвать смех у собеседника, но ни как не обиду. Тем не менее я приношу извинения всем кого я обидел (хотя до высказывания QryStaL у меня и мыслей таких не было). Я стараюсь руководствоваться поговоркой про колодец (из которого пьют). Про то что я давлю на жалость это вы зря, я старался называть вещи своими именами, что бы так сказать процесс объяснения упростился. Помнится, когда я учился, долгое время не мог понять роль транзистора в электронике, слова учебника во мне не находили пристанища (запомнил, а что толку, если не понял, что запомнил). А потом товарищ объяснил, что фишка в управляющих токах. И все стало на свои места, после этого я и учебник и понял (и вообще весь скрытый смысл жизни (это кстати шутка)) А давить, кстати лучше на слабо, а еще лучше создать спортивный интерес (азарт). Жалость это как-то низко, молится я ни на кого не собираюсь и стелиться не перед кем не буду. А в целом вы в принципе правы...
QryStaL, Вообще конечно грустно видеть во что превращается банальный вопрос. Это сообщение отредактировал(а) okaton - 15.12.2008, 12:31 |
|||
|
||||
| QryStaL |
|
||||||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Я думаю, что к здравой критике стоит прислушиваться (если считаете, что она не здравая - опровергните). Делать это или нет - личное дело каждого. А учить жить - дело неблагодарное, нет у меня желания этим заниматься.
Прямо триллер какой-то
Грустно видеть, что человек не хочет приложить усилия, чтобы в чем-то разобраться. -------------------- I don't need a reason being who I am... |
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |