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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание экземпляров класса в цикле, как это сделать? 
:(
    Опции темы
Horoshil
Дата 5.8.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Допустим я хочу создать 1000шт экземпляров класса. Но у каждого экземпляра должно быть своё имя. Как сделать это в цикле, чтобы не мучаться?

PM MAIL   Вверх
MasterOfCode
Дата 5.8.2008, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

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



Создай контенер, в него полажи столько классов, сколько тебе надо.


--------------------
user posted image
PM ICQ   Вверх
skyboy
Дата 5.8.2008, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



за пределами цикла тебе надо будет обращаться к экземплярам? 
если да, то создай массив(или список), каждый элемент которого будет экземпляром.
если нет(к примеру, контролы на форме: раз создал, проинициализировал и забыл), то можно в одну и ту же переменную записывать каждый вновь создаваемый объект.
PM MAIL   Вверх
Fyrklod
Дата 5.8.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  5.8.2008,  08:36 Найти цитируемый пост)
к примеру, контролы на форме: раз создал, проинициализировал и забыл

таже фигня была у меня... если обычные объекты которые ты бросаешь на форму программно, то просто 
Код

<Component>.Name  = "Com" + i.ToString();


Если же обычная экземпляр никак не связанный с компонентами, то просто используй ArrayList()
Код

ArrayList ar = new ArrayList();
for(i=0; i<3; i++)
    Class1 cl = new Class1();
   ar.Add(cl);

--------------------
Зачем компьютеры пищат, когда нажимаешь сразу много клавиш? Чтобы будить уснувших на клавиатуре программистов!
PM MAIL   Вверх
Horoshil
Дата 12.8.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне нужно создать кучу однотипных компонентов на форме, а потом по ходу программы к ним обращаться. То есть я создаю ArrayList, а потом нужный мне компонент вызываю из него, как из массива?
PM MAIL   Вверх
Partizan
Дата 12.8.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Horoshil, достаточно простого массива...без всяких ArrayList....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Horoshil
Дата 14.8.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ага, получилось! Спасибо))

Это сообщение отредактировал(а) Horoshil - 14.8.2008, 23:14
PM MAIL   Вверх
Ram1reS
Дата 15.8.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 25.4.2008
Где: Москва

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



Сорри, ошибся топиком.

Это сообщение отредактировал(а) Ram1reS - 15.8.2008, 11:39
--------------------
 
PM MAIL ICQ   Вверх
Partizan
Дата 15.8.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Ram1reS, по-моему темой ошибся)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Ram1reS
Дата 15.8.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 25.4.2008
Где: Москва

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



Блин, действительно ошибся.
--------------------
 
PM MAIL ICQ   Вверх
Horoshil
Дата 16.8.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Возник новый вопрос. Допустим, я создал массив:
Код

System.Windows.Forms.Button[] Pictures = new System.Windows.Forms.Button[100];
 
Заполнил его в цикле, нарисовал - здорово. Да здравствует 100 кнопок!

А теперь я хочу для каждого из компонентов массива написать событие, например button_click:
Код

private void button1_Click(object sender, System.EventArgs e)
    {
        
    }
private void button2_Click(object sender, System.EventArgs e)
    {
        
    }
...
 

Как это сделать в цикле, чтобы в ручную опять-таки это всё не делать? А массив из функций сделать можно?
PM MAIL   Вверх
Partizan
Дата 17.8.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Цитата

Как это сделать в цикле, чтобы в ручную опять-таки это всё не делать


Зависит от того, что будет внутри обработчиков....

я думаю что скорее всего вам достаточно будет одного обработчика на все кнопки.
просто при создании кнопки пишите что-то типа этого button.Click += button_Click;

В общем опишите в чём различие между button1_Click и button2_Click, и тогда можно будет сказать как именно реализовать то, что вам нужно.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Horoshil
Дата 17.8.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну если попытаться упростить... у меня есть функция:
Код

void Function(int i)
{
   ...
}
 
Эта функция должна вызываться при нажатии кнопки, где аргумент i - это номер нажатой кнопки. А если обработчик один, он вроде как не сможет определить номер нажатой кнопки...

У меня есть конечно идея перехватывать координаты мышки в момент нажатия кнопки, а потом сравнивать эти координаты с координатами всех кнопок. И таким образом определять номер нажатой кнопки. Но это как-то через.....

Это сообщение отредактировал(а) Horoshil - 17.8.2008, 20:10
PM MAIL   Вверх
Partizan
Дата 17.8.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Horoshil, при создании кладёте в Tag кнопки её номер, а затем пишете один обработчик для всех кнопок:

Код

private void button_Click(object sender, System.EventArgs e)
    {
            if (!sender is Button)
                  return; 

            Button btn = sender as Button;
            if (btn.Tag != null && btn.Tag is int)//Если надо добавляем проверки на byte, short итд
            {
                    Function((int)btn.Tag);
            }
    }



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Horoshil
Дата 18.8.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Partizan, огромное спасибо! Получилось!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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