Este es el código
Código:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Fotos { public partial class Form1 : Form { //defino los campos int contador; int ancho; int alto; int posicionInicialAncho; int posicionInicialAlto; int posicionActualAlto; int posicionActualAncho; string[] nombres; public Form1() { //inicializo los campos dandoles valores iniciales InitializeComponent(); contador = 0; ancho = 260; alto = 210; posicionInicialAncho = 10; posicionInicialAlto = 10; posicionActualAlto = posicionInicialAlto; posicionActualAncho = posicionInicialAncho; } private void btnselecciona_Click(object sender, EventArgs e) { // Set the file dialog to filter for graphics files. this.openFileDialog1.Filter = "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + "All files (*.*)|*.*"; //abre el cuadro de dialogo para elejir la o las fotos if (openFileDialog1.ShowDialog() == DialogResult.OK) { //guardo el ancho del panel que está acoplado a la ventana int panelTamano = panel1.Size.Width; //recorro el array de fotos elejidas foreach (string file in openFileDialog1.FileNames) { //si es la primer interación if (contador == 0) { //inicializa el array para guardar los nombres de los objetos pictureBox() creados dinámicamente nombres = new string[openFileDialog1.FileNames.Length]; } //en cada iteración se crea un objeto pictureBox() PictureBox PBox = new PictureBox(); //modifico sos propiedades PBox.Size = new Size(ancho, alto); PBox.SizeMode = PictureBoxSizeMode.Zoom; PBox.Name = "imgBox" + Convert.ToString(contador); //le doy a este array el nombre de todos los obetos creados co la esperanza de poder utilizarlos más adelante nombres[contador] = Convert.ToString(contador); //si el ancho de la ventana supera al de las fotos lo baja a la siguiente linea if ((posicionActualAncho + ancho + posicionInicialAncho) > panelTamano) { posicionActualAncho = posicionInicialAncho; posicionActualAlto = (posicionActualAlto + posicionInicialAlto + alto); } //le asina poosición al control PBox.Location = new Point(posicionActualAncho, posicionActualAlto); //añade el control panel1.Controls.Add(PBox); PBox.Load(file); posicionActualAncho = posicionActualAncho + ancho + posicionInicialAncho; } } } private void Form1_SizeChanged(object sender, EventArgs e) { int ventanaAlto = panel1.Size.Height; int ventanaAncho = panel1.Size.Width; //MessageBox.Show(Convert.ToString( nombres.Length )); foreach(string nom in nombres) { if ((posicionActualAncho + ancho + posicionInicialAncho) > ventanaAncho) { posicionActualAncho = posicionInicialAncho; posicionActualAlto = (posicionActualAlto + posicionInicialAlto + alto); } } } } }