2015-12-18 3 views
0

Я новичок в C#, и мне было интересно, что здесь вызывает ошибку. Я пытаюсь установить ширину, высоту, док или изображение в объекте.C# - Установка нескольких объектов изображения на форму

private void Home_Load(object sender, EventArgs e) 
{ 
    string[] fileNo = File.ReadAllLines(@"..\..\images\Products\productListing.txt"); 
    PictureBox[] imageControl = new PictureBox[fileNo.Length]; 
    for (int i = 0; i < fileNo.Length; i++) 
    { 
     imageControl[i].Width = 400; 
     imageControl[i].Height = 400; 

     Bitmap image = new Bitmap(@"..\..\images\Products\" + i + ".jpg"); 

     imageControl[i].Dock = DockStyle.Fill; 
     imageControl[i].Image = (Image)image; 

     Console.WriteLine(i); 
    } 
} 

Я получаю NullReferenceException был необработанной ошибкой

imageControl[i].Width = 400; 

imageControl[i].Height = 400; 

imageControl[i].Dock = DockStyle.Fill; 

imageControl[i].Image = (Image)image; 

ответ

3

Вы не инстанцирование любой PictureBoxes. Попробуйте это:

for (int i = 0; i < fileNo.Length; i++) 
{ 
    imageControl[i] = new PictureBox(); 
    ... 
} 
0

Сначала создайте PictureBox объект класса а затем присвоить эти свойства. Вы просто пытаетесь получить доступ к Picturebox, но вы не инициировали этот объект.

private void Home_Load(object sender, EventArgs e) 
{ 
    string[] fileNo = File.ReadAllLines(@"..\..\images\Products\productListing.txt"); 
    PictureBox[] imageControl = new PictureBox[fileNo.Length]; 
    for (int i = 0; i < fileNo.Length; i++) 
    { 
     imageControl[i] = new PictureBox(); // initiate object first 
     imageControl[i].Width = 400; // you are accessing a null object here. 
     imageControl[i].Height = 400; 

     Bitmap image = new Bitmap(@"..\..\images\Products\" + i + ".jpg"); 

     imageControl[i].Dock = DockStyle.Fill; 
     imageControl[i].Image = (Image)image; 

     Console.WriteLine(i); 
    } 
} 

Если вы хотите добавить эти элементы управления снимками в виде затем добавить их с помощью Form.Controls proertry. , например. this.Controls.Add (imagecontrol [i], но помните, что вы устанавливаете для этого свойства Dock управления свойство «Заполнить», тогда вы сможете видеть только изображение сразу. Поэтому установите их свойство размера и местоположения, чтобы показать их все.

Надеюсь, это поможет вам ..

Смежные вопросы