| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Как создать массив имиджей динамически в C#? |
| Автор: passs 12.2.2004, 17:08 |
| Привет все! Подскажите, плиз, как динамически создать массив объектов, точнее объекты массива? Я все никак правильно не могу синтаксис написать, а может вообще все пишу не правильно: 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 | ||
| Отвечаю несколько обще, но это общеупотребительная практика, так что лучше так IMHO. Ты сначала должен создать массив ссылок на объекты, а потом еще и сами объекты. Например, создать на форме пять кнопок
|
| Автор: Kurt 12.2.2004, 18:57 | ||||||||
Я не сильно разбираюсь в этой части ДотНЕТ (имеется ввиду web..), но попробуй написать так:
Т.е. new надо не от объекта, а от типа.. А обращение к элементу массива, даже если в нем тока ОДИН элемент:
Применительно, к твоему коду:
Похоже?.. |
| Автор: AntonSaburov 13.2.2004, 13:14 | ||||
Вот тут неверно. Первая строка создает ТОЛЬКО МАССИВ еще НЕИНИЦИАЛИЗИРОВАННЫХ ссылок на Image. Т.е. у тебя уже есть заполненная ссылка на массив из одного элемента. А вот сам элемент все еще является NULL. И сначала надо создать объект для заполнения элемента массива, и только потом устанавливать у этого элемента свойства.
|
| Автор: Kurt 13.2.2004, 18:53 | ||
| Неинициализированные ссылки? Поидее, да.. Вы правы.. Сорри, за ложные сведения.. Однако.. Меня смущает такой код:
Вроде инициализации нет, хотя string - тоже класс.. Все работает.. |
| Автор: AntonSaburov 16.2.2004, 13:38 | ||
Есть Просто здесь происходит unboxing - по сути любой объект может быть как-бы запакован, а потом распакован. Здесь как раз такое - из строки символов автоматическим приведением получается готовый объект String. И его присваиваем ссылке. Так что здесь все нормально. |
| Автор: Kurt 16.2.2004, 20:00 |
| Хм.. А с System.Web.UI.WebControls, как я понимаю, так нельзя? "Автоматически" ничего не создается?.. |
| Автор: AntonSaburov 17.2.2004, 10:37 | ||
Так точно - не создается. Надо все делать ручками. |