Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Sr.Morocco en 12 Marzo 2010, 00:39 am



Título: array de controles
Publicado por: Sr.Morocco en 12 Marzo 2010, 00:39 am
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í
Código:
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.


Título: Re: array de controles
Publicado por: raul338 en 12 Marzo 2010, 13:24 pm
MMm.. no se si haya una forma mas directa, pero por ahora se me ocurre algo asi

Código
  1. int elegido = 2; // Aca haces que sea aleatorio, yo puse un ejemplo
  2. int i = 0;
  3. foreach (PictureBox pb in this.Controls) {
  4.    if (i == elegido) {
  5.        pb.Image = System.Drawing.Image.FromFile(img[RDM]);
  6.        break;
  7.    }
  8.    i++;
  9. }
  10.  

Con eso deberia funcionar :)


Título: Re: array de controles
Publicado por: [D4N93R] en 12 Marzo 2010, 16:45 pm
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
  1. //Escenario, primero crear varios picturebox en el formulario.
  2.  
  3. List<PictureBox> pictureBoxList = new List<PictureBox>();
  4. List<Image> imagesList = new List<Image>();
  5.  
  6. imageList.Add(Image.FromFile("SampleImage1.jpg"));
  7. imageList.Add(Image.FromFile("SampleImage2.jpg"));
  8. imageList.Add(Image.FromFile("SampleImage3.jpg"));
  9.  
  10. //Con esto metes todos los PB en una lista.
  11. foreach (Control c in this.Controls)
  12. {
  13.    if(c is PictureBox)
  14.    {
  15.        pictureBoxList.Add(c as PictureBox);
  16.    }
  17. }
  18.  
  19.  
  20. Random rand = new Random();
  21.  
  22. pictureBoxList[rand.Next(0, pictureBoxList.Count)].Image = imagesList[rand.Next(0, imagesList.Count)];
  23.  

Esto debería servirte :D


Título: Re: array de controles
Publicado por: Sr.Morocco en 13 Marzo 2010, 18:44 pm
Gracias, ahora ya me funciona. Al final me ha quedado así:

Código
  1.            int RDM = 0;
  2.            int aleatorio = 0;
  3.            string[] img = guardar_cargar.cargar("C:\\imagenes.txt");
  4.  
  5.            List<PictureBox> pictureBoxList = new List<PictureBox>();
  6.  
  7.            foreach (Control c in this.Controls)
  8.              {
  9.                 if (c is PictureBox)
  10.                 {
  11.                     pictureBoxList.Add(c as PictureBox);
  12.                 }
  13.              }
  14.  
  15.  
  16.            for (int i = 0; i < 6; i++)
  17.            {  
  18.                //copia las imagenes aleatoriamente en pircturebox aleatorios
  19.                RDM = repeticiones("C:\\imagenes.txt"); //funcion que comprueba que no se repita ningun random
  20.                aleatorio = repeticiones_pb(); //funcion que comprueba que no se repita ningun random
  21.                pictureBoxList[aleatorio].Image = System.Drawing.Image.FromFile(img[RDM]);
  22.  
  23.                //copia en los pirturebox las imagenes que han tocado antes para hacer la pareja
  24.                aleatorio = repeticiones_pb();
  25.                pictureBoxList[aleatorio].Image = System.Drawing.Image.FromFile(img[RDM]);
  26.            }

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


Título: Re: array de controles
Publicado por: [D4N93R] en 15 Marzo 2010, 18:43 pm
Ah ok! jeje que bueno que te haya servido.. Un saludo!