array de controles

Iniciado por Sr.Morocco, 12 Marzo 2010, 00:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Sr.Morocco

Hay alguna forma de hacer un array de pictureBox en c#? Sé que en visual basic lo hacía, pero no encuentro nada para csharp.

En caso de que no se pueda como podría hacer para que en un picturebox aleatorio me meta una imagen aleatoria?
Ahora lo tengo así
pictureBox1.Image = System.Drawing.Image.FromFile(img[RDM]);
de manera que me mete una imagen aleatoria pero también quiero que lo inserte en un picturebox aleatorio.

raul338

MMm.. no se si haya una forma mas directa, pero por ahora se me ocurre algo asi

Código (csharp) [Seleccionar]

int elegido = 2; // Aca haces que sea aleatorio, yo puse un ejemplo
int i = 0;
foreach (PictureBox pb in this.Controls) {
    if (i == elegido) {
        pb.Image = System.Drawing.Image.FromFile(img[RDM]);
        break;
    }
    i++;
}


Con eso deberia funcionar :)

[D4N93R]

Hola, no se si entendí bien. A ver, tienes varios PictureBox? Y quieres establecerle a un pictureBox aleatorio una imagen aleatória?

Uhm, creo que va algo así:

Código (csharp) [Seleccionar]
//Escenario, primero crear varios picturebox en el formulario.

List<PictureBox> pictureBoxList = new List<PictureBox>();
List<Image> imagesList = new List<Image>();

imageList.Add(Image.FromFile("SampleImage1.jpg"));
imageList.Add(Image.FromFile("SampleImage2.jpg"));
imageList.Add(Image.FromFile("SampleImage3.jpg"));

//Con esto metes todos los PB en una lista.
foreach (Control c in this.Controls)
{
    if(c is PictureBox)
    {
        pictureBoxList.Add(c as PictureBox);
    }
}


Random rand = new Random();

pictureBoxList[rand.Next(0, pictureBoxList.Count)].Image = imagesList[rand.Next(0, imagesList.Count)];


Esto debería servirte :D

Sr.Morocco

#3
Gracias, ahora ya me funciona. Al final me ha quedado así:

Código (csharp) [Seleccionar]

           int RDM = 0;
           int aleatorio = 0;
           string[] img = guardar_cargar.cargar("C:\\imagenes.txt");

           List<PictureBox> pictureBoxList = new List<PictureBox>();

           foreach (Control c in this.Controls)
             {
                if (c is PictureBox)
                {
                    pictureBoxList.Add(c as PictureBox);
                }
             }

           
           for (int i = 0; i < 6; i++)
           {  
               //copia las imagenes aleatoriamente en pircturebox aleatorios
               RDM = repeticiones("C:\\imagenes.txt"); //funcion que comprueba que no se repita ningun random
               aleatorio = repeticiones_pb(); //funcion que comprueba que no se repita ningun random
               pictureBoxList[aleatorio].Image = System.Drawing.Image.FromFile(img[RDM]);

               //copia en los pirturebox las imagenes que han tocado antes para hacer la pareja
               aleatorio = repeticiones_pb();
               pictureBoxList[aleatorio].Image = System.Drawing.Image.FromFile(img[RDM]);
           }


El codigo es para hacer un juego de esos que hay cartas tapadas y tienes que acertar parejas.

[D4N93R]

Ah ok! jeje que bueno que te haya servido.. Un saludo!