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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать массив имиджей динамически в C#? C# in Net Framework 
:(
    Опции темы
passs
Дата 12.2.2004, 17:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет все!

Подскажите, плиз, как динамически создать массив объектов, точнее объекты массива?

Я все никак правильно не могу синтаксис написать, а может вообще все пишу не правильно:
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button butAdd;
System.Web.UI.WebControls.Image[] myImage;// = new System.Web.UI.WebControls.Image;
int yCount = 0;
int iCount = 0;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
yCount = 150;
iCount = 0;
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.butAdd.Click += new System.EventHandler(this.butAdd_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void butAdd_Click(object sender, System.EventArgs e)
{
//
//this.myImage.
myImage[] = new myImage[1];
myImage.Style["Left"] = "150";
myImage.Style["Top"] = yCount.ToString();
yCount = yCount + 20;
myImage.Style["Z-INDEX"] = "112";
myImage.Style["POSITION"] = "absolute";
Page.Controls.Add(myImage);
iCount++;
}
}

вот это то, что не работает:-)

Если кто знает, подскажите, плиз, буду очень благодарен!

С уважением,
Александр
  Вверх
AntonSaburov
Дата 12.2.2004, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Отвечаю несколько обще, но это общеупотребительная практика, так что лучше так IMHO.
Ты сначала должен создать массив ссылок на объекты, а потом еще и сами объекты.

Например, создать на форме пять кнопок
Код

private void button1_Click(object sender, System.EventArgs e)
{
   Button[] btn_list = new Button[5];
   for(int k=0; k<btn_list.Length; k++)
   {
       btn_list[k] = new Button();
       btn_list[k].Top = k*25;
   }
   for(int k=0; k<btn_list.Length; k++)
   {
       this.Controls.Add(btn_list[k]);
   }
}


PM MAIL WWW ICQ   Вверх
Kurt
Дата 12.2.2004, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Цитата(passs @ 12.2.2004, 17:08)

  myImage[] = new myImage[1];
  myImage.Style["Left"] = "150";

Я не сильно разбираюсь в этой части ДотНЕТ (имеется ввиду web..),
но попробуй написать так:
Код

myImage = new System.Web.UI.WebControls.Image[5];  // 5 тут для примера - поставь что хошь..

Т.е. new надо не от объекта, а от типа..
А обращение к элементу массива, даже если в нем тока ОДИН элемент:
Код

myImage[index].Style...  // index - индекс элемента в массиве..


Применительно, к твоему коду:
Код

myImage[] = new System.Web.UI.WebControls.Image[1];
myImage[0].Style["Left"] = "150";  // нумерация с 0..


Похоже?.. smile.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
AntonSaburov
Дата 13.2.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Код

myImage[] = new System.Web.UI.WebControls.Image[1];
myImage[0].Style["Left"] = "150";  // нумерация с 0..

Вот тут неверно. Первая строка создает ТОЛЬКО МАССИВ еще НЕИНИЦИАЛИЗИРОВАННЫХ ссылок на Image. Т.е. у тебя уже есть заполненная ссылка на массив из одного элемента. А вот сам элемент все еще является NULL.
И сначала надо создать объект для заполнения элемента массива, и только потом устанавливать у этого элемента свойства.
Код

myImage[] = new System.Web.UI.WebControls.Image[1];
myImage[0] = new System.Web.UI.WebControls.Image(); // Вот это создание !!!
myImage[0].Style["Left"] = "150";  // нумерация с 0..

PM MAIL WWW ICQ   Вверх
Kurt
Дата 13.2.2004, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Неинициализированные ссылки?
Поидее, да.. Вы правы..
Сорри, за ложные сведения.. biggrin.gif
Однако..
Меня смущает такой код:
Код
using System;

class MainClass
{
public static void Main(string[] args)
{
 string[] strArr;
 strArr = new string[10];
 strArr[5] = "Just a string";
 Console.WriteLine(strArr[5]);
}
}


Вроде инициализации нет, хотя string - тоже класс..
Все работает.. confused.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
AntonSaburov
Дата 16.2.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Цитата
Вроде инициализации нет

Есть Просто здесь происходит unboxing - по сути любой объект может быть как-бы запакован, а потом распакован. Здесь как раз такое - из строки символов автоматическим приведением получается готовый объект String. И его присваиваем ссылке. Так что здесь все нормально.
PM MAIL WWW ICQ   Вверх
Kurt
Дата 16.2.2004, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Хм..
А с System.Web.UI.WebControls, как я понимаю, так нельзя?
"Автоматически" ничего не создается?..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
AntonSaburov
Дата 17.2.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



Цитата
А с System.Web.UI.WebControls, как я понимаю, так нельзя?

Так точно - не создается. Надо все делать ручками.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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