Foros del Web » Programación para mayores de 30 ;) » .NET »

¿cómo obtener los controles creados dinamicamente en C#?

Estas en el tema de ¿cómo obtener los controles creados dinamicamente en C#? en el foro de .NET en Foros del Web. estoy aprendieno c# y con lo que he leido he intentado practicar, como práctica decidí hacer un programa donde elijo una o mas imagenes y ...
  #1 (permalink)  
Antiguo 29/12/2013, 13:06
 
Fecha de Ingreso: julio-2009
Mensajes: 178
Antigüedad: 14 años, 9 meses
Puntos: 1
¿cómo obtener los controles creados dinamicamente en C#?

estoy aprendieno c# y con lo que he leido he intentado practicar, como práctica decidí hacer un programa donde elijo una o mas imagenes y las muestra en mosaico como el del fondo de escritorio de windows, lo logro hacer poero como la posición es absoluta no se reacomoda cuando redimenciono la ventana, estoy haciendo un método que aga eso pero no sé como referenciar el control.propiedad.
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);
                }
                
                
            }
        }
    }
}

Etiquetas: control, controles, dinamicamente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:14.