.NET 3.x динамическое создание объектов класса - C#
Формулировка задачи:
Пишу программу которая при нажатие кнопки будет кидать на форму изображение, описал всё это в классе но так как таких изображений будет много я решил создать массив объектов, при запуске прога просто зависает и предлагает найти решение проблемы в интернете, помогите исправить может реализовать это другим методом
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
wall[] Wall = new wall[50];
public int NumberSOfWall;
public Form2()
{
InitializeComponent();
for (int i = 0; i < 50 ; i++ ) {Wall[i]=new wall(); }
NumberSOfWall = 0;
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Wall[NumberSOfWall].newWall();
NumberSOfWall++;
}
}
public class wall : Form2
{
public int NumberOfWall = 0;
public string NewNameWall = "";
public Image wall1;
public PictureBox pbox;
public wall() { }
public void newWall()
{
NewNameWall = "wall" + NumberOfWall;
NumberOfWall++;
wall1 = Image.FromFile("pict/wall.png");
pbox = new PictureBox();
pbox.Image = wall1;
/* pbox.Left = a++;
pbox.Top = b++;*/
pbox.Visible = true;
this.Controls.Add(pbox);
}
}
}Решение задачи: «.NET 3.x динамическое создание объектов класса»
textual
Листинг программы
public partial class Form2 : Form
{
public string NewNameWall = "";
public int NumberOfWall;
public List<PictureBox> _pboxes = new List<PictureBox>();
OpenFileDialog openFileDialog1 = new OpenFileDialog();
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = false;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (string.IsNullOrEmpty(openFileDialog1.FileName) ||
!File.Exists(openFileDialog1.FileName))
return;
var pbox = new PictureBox { Image = Image.FromFile(openFileDialog1.FileName), Visible = true };
_pboxes.Add(pbox);
NewNameWall = "wall" + _pboxes.Count;
Controls.Add(pbox);
}
}
}