Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считать с текстбокса, Считать с текстбокса 
:(
    Опции темы
dzjundzja88
Дата 2.3.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.2.2011

Репутация: нет
Всего: нет



Создаю динамически 10 текстбоксов
Код

                for (int i = 0; i < 10; i++)
                {
                    TextBox TextB = new TextBox();
                    TextB.Name = "TextB" + Convert.ToString(i + 1); 
                    TextB.Parent = this.MF_in_Panel;
                    TextB.Location = new Point(5 + CheckB.Size.Width + 18, 10 + 30 * i); 
                    TextB.Validating += new CancelEventHandler(this.TextBValidating);
                    TextB.Enabled = true; //knopka aktivna
                 }


Как мне теперь считать со всех текстбоксов (допустим тоже в цикле)? Это я просто написал в цикле 10, а вообще я заранее не знаю сколько их будет. 
PM MAIL   Вверх
dj100500
Дата 2.3.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.10.2010

Репутация: нет
Всего: нет



ну загони их в List<TextBox>
а потом в цикле пройди
foreach (TextBox t in MyBoxes)
            {
                MessageBox.Show(t.Text);
            }
PM MAIL   Вверх
puZzo
Дата 2.3.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Я тоже с подобным работал, делал как предложил dj100500, но меня интересовало, да и интересует, а как обратиться к объекту, заведомо не зная его имени? В Delphi давненько делал каким-то макаром подставляя вместо имени string, содержащий имя объекта..
PM ICQ   Вверх
Экскалупатор
Дата 2.3.2011, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



puZzo, ты знаешь что происходит в этой строке?
Код

TextBox TextB = new TextBox();


для чего тебе имя? у тебя есть какие то объекты, и есть ссылки на эти объекты, вот по ним и обращайся, грубо говоря, эти текстбоксы надо добавить в какую то коллекцию и потом обращаться к ним через эту коллекцию.

з.ы. только боюсь все твои тексбоксы после окончания цикла будут уничтожены, если ты все оставишь так как оно описано сейчас и не передашь ссылки на текстбоксы какой то переменной которая будет находится в другой области видимости(там где ее будут использовать). почитай про области видимости и про то что такое классы и как с ними работать.

Это сообщение отредактировал(а) Экскалупатор - 2.3.2011, 21:05
PM MAIL ICQ   Вверх
puZzo
Дата 3.3.2011, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Экскалупатор, Создается экземпляр класса TextBox, а точнее ссылка на этот экземпляр, new выделяет память, а TextBox() конструктор того самого класса?

как я делал в Delphi:
Код
(Form1.FindComponent('label1') as TLabel).Text := 'Найденный с помощью FindComponent() контрол';


а это то, что мне интересно было в .NET и в принципе может быть реализовано в реальных приложениях, когда не нужно делать много контролов.
Код
this.Controls.Find("label1", false)[0].Text = "Найденный с помощью Controls.Find() контрол";


з.ы.: у меня в дипломе был один момент, когда нужно было к контролам обращаться именно таким способом.

dzjundzja88, а тебе действительно нужно делать коллекцию

Это сообщение отредактировал(а) puZzo - 3.3.2011, 05:48
PM ICQ   Вверх
Экскалупатор
Дата 3.3.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



puZzo, так в чем проблема? делай коллекцию текстбоксов, при создании текстбокса присваивай имена и ищи по коллекции(будет даже быстрее и проще чем искать в коллекции всех контролов). можно еще создать коллекцию имен если уж так надо. по сути Controls это и есть коллекция, можно добавлять прямо в нее, потом делать коллекцию имен и по этим именам искать. просто если сделать отдельную коллекцию по своим контролам то круг поиска существенно сузится.
PM MAIL ICQ   Вверх
puZzo
Дата 3.3.2011, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



да это то все понятно, просто вставал у меня когда-то такой вопрос, ну вот и решение нашлось) а коллекции то я давно использую для этих целей;-)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.