none
Cargar imagen en listview segun nombre de item RRS feed

  • Pregunta

  • Hola amigos... como el título lo indica, necesito una forma de, segun el nombre del item muestre una foto en una carpeta dada es decir si existe un item llamado Pepe muestre en ese item una foto llamada pepe.jpg. Si me pudieran ayudar de antemano gracias. Saludos
    • Editado Hackerprod lunes, 30 de julio de 2018 13:48
    lunes, 30 de julio de 2018 13:05

Respuestas

  • Hola Hackerprod

    Con respecto a tu consulta, puedes basarte en el siguiente ejemplo:

    public Form1()
            {
                InitializeComponent();
              
            }
    
            private void button1_Click(object sender, EventArgs e)
            {//cargar
               
                DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\images");
                
                this.listView1.Clear();
                this.imageList1.Images.Clear();
    
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {
                        this.imageList1.Images.Add(Image.FromFile(file.FullName));
                    }
    
                    catch
                    {
                        Console.WriteLine("No es un archivo de imagen");
                    }
                }
    
                this.listView1.View = View.LargeIcon;
    
                this.imageList1.ImageSize = new Size(160, 110);
    
                this.listView1.LargeImageList = this.imageList1;
    
             
                for (int j = 0; j < this.imageList1.Images.Count; j++)
                {
                    ListViewItem item = new ListViewItem();
    
                    item.ImageIndex = j;
    
                    this.listView1.Items.Add(item);
                }
    
               
            }
    
            private void button2_Click(object sender, EventArgs e)
            {//limpiar
                this.listView1.Clear();
                this.imageList1.Images.Clear();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {//borrar seleccionada
    
                while (listView1.Items.Count > 0)
                {
                    ListViewItem item = listView1.Items[0];
    
                    for (int i = item.Index + 1; i < listView1.Items.Count; i++)
                    {
                        
                        listView1.Items[i].ImageIndex--;
                    }
                    listView1.Items.Remove(item);
    
                    Image img = imageList1.Images[item.ImageIndex];
                    imageList1.Images.RemoveAt(item.ImageIndex);
                    img.Dispose();
                }
    
    //damn borra todo
    
                
            }
    
            }

    Gracias por usar los foros de MSDN 

    Pablo Rubio

    __________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

     

    • Marcado como respuesta Hackerprod lunes, 30 de julio de 2018 18:37
    lunes, 30 de julio de 2018 15:47
    Moderador
  • Hola Hackerprod

    Con respecto a tu consulta, puedes basarte en el siguiente ejemplo:

    public Form1()
            {
                InitializeComponent();
              
            }
    
            private void button1_Click(object sender, EventArgs e)
            {//cargar
               
                DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\images");
                
                this.listView1.Clear();
                this.imageList1.Images.Clear();
    
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {
                        this.imageList1.Images.Add(Image.FromFile(file.FullName));
                    }
    
                    catch
                    {
                        Console.WriteLine("No es un archivo de imagen");
                    }
                }
    
                this.listView1.View = View.LargeIcon;
    
                this.imageList1.ImageSize = new Size(160, 110);
    
                this.listView1.LargeImageList = this.imageList1;
    
             
                for (int j = 0; j < this.imageList1.Images.Count; j++)
                {
                    ListViewItem item = new ListViewItem();
    
                    item.ImageIndex = j;
    
                    this.listView1.Items.Add(item);
                }
    
               
            }
    
            private void button2_Click(object sender, EventArgs e)
            {//limpiar
                this.listView1.Clear();
                this.imageList1.Images.Clear();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {//borrar seleccionada
    
                while (listView1.Items.Count > 0)
                {
                    ListViewItem item = listView1.Items[0];
    
                    for (int i = item.Index + 1; i < listView1.Items.Count; i++)
                    {
                        
                        listView1.Items[i].ImageIndex--;
                    }
                    listView1.Items.Remove(item);
    
                    Image img = imageList1.Images[item.ImageIndex];
                    imageList1.Images.RemoveAt(item.ImageIndex);
                    img.Dispose();
                }
    
    //damn borra todo
    
                
            }
    
            }

    Gracias por usar los foros de MSDN 

    Pablo Rubio

    __________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

     

    Hola Pablo gracias por la respuesta...

    mira la idea es llenar una lista de usuarios(en un chat) y obtener el avatar desde un directorio en el cual las imagenes tienen el mismo nombre del usuario (para que sea más fácil) en tu ejemplo se llena un listview con las imagenes que hay en una carpeta, bien... asi ya lo estaba haciendo pero como puedo hacer para que al llenarme el imagelist me guarde junto con la imagen el key para despues buscar el que coincida con el usuario y asi asignarlo. Ejemplo

                DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory + "/avatars/");
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {

                      //Aki agrego la imagen al imagelist pero como agrego tambien el keycon file.Name para compararlo con el usuario

                        ImageAvatar.Images.Add(Image.FromFile(file.FullName));
                    }
                    catch { }
                }
                this.imageList1.ImageSize = new Size(32, 32);


    De nuevo gracias. Saludos

    /////////////////////////////////////////////////////////

    Respondiendo mi propia pregunta, ya encontre la manera

    busque la imagen por la clave

                int imagesCount = ImageAvatar.Images.Count;
                int i = 0;

                while (i < imagesCount)
                {
                    if (ImageAvatar.Images.Keys[i].ToString() == NickName.Text + ".jpg")
                    {
                        ListViewItem lvi = new ListViewItem();
                        lvi.ImageIndex = i;
                        lvi.Text = NickName.Text;
                        foreach (ListViewItem usuario in UserList.Items)
                        {
                            if (usuario.Text.Equals(NickName.Text))
                            {
                                   usuario.ImageIndex = i;
                            }
                        }
                    }
                    i++;
                }
    Saludos


    • Marcado como respuesta Hackerprod lunes, 30 de julio de 2018 18:28
    • Editado Hackerprod lunes, 30 de julio de 2018 18:31
    lunes, 30 de julio de 2018 17:04

Todas las respuestas

  • Hola Hackerprod

    Con respecto a tu consulta, puedes basarte en el siguiente ejemplo:

    public Form1()
            {
                InitializeComponent();
              
            }
    
            private void button1_Click(object sender, EventArgs e)
            {//cargar
               
                DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\images");
                
                this.listView1.Clear();
                this.imageList1.Images.Clear();
    
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {
                        this.imageList1.Images.Add(Image.FromFile(file.FullName));
                    }
    
                    catch
                    {
                        Console.WriteLine("No es un archivo de imagen");
                    }
                }
    
                this.listView1.View = View.LargeIcon;
    
                this.imageList1.ImageSize = new Size(160, 110);
    
                this.listView1.LargeImageList = this.imageList1;
    
             
                for (int j = 0; j < this.imageList1.Images.Count; j++)
                {
                    ListViewItem item = new ListViewItem();
    
                    item.ImageIndex = j;
    
                    this.listView1.Items.Add(item);
                }
    
               
            }
    
            private void button2_Click(object sender, EventArgs e)
            {//limpiar
                this.listView1.Clear();
                this.imageList1.Images.Clear();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {//borrar seleccionada
    
                while (listView1.Items.Count > 0)
                {
                    ListViewItem item = listView1.Items[0];
    
                    for (int i = item.Index + 1; i < listView1.Items.Count; i++)
                    {
                        
                        listView1.Items[i].ImageIndex--;
                    }
                    listView1.Items.Remove(item);
    
                    Image img = imageList1.Images[item.ImageIndex];
                    imageList1.Images.RemoveAt(item.ImageIndex);
                    img.Dispose();
                }
    
    //damn borra todo
    
                
            }
    
            }

    Gracias por usar los foros de MSDN 

    Pablo Rubio

    __________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

     

    • Marcado como respuesta Hackerprod lunes, 30 de julio de 2018 18:37
    lunes, 30 de julio de 2018 15:47
    Moderador
  • Hola Hackerprod

    Con respecto a tu consulta, puedes basarte en el siguiente ejemplo:

    public Form1()
            {
                InitializeComponent();
              
            }
    
            private void button1_Click(object sender, EventArgs e)
            {//cargar
               
                DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\images");
                
                this.listView1.Clear();
                this.imageList1.Images.Clear();
    
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {
                        this.imageList1.Images.Add(Image.FromFile(file.FullName));
                    }
    
                    catch
                    {
                        Console.WriteLine("No es un archivo de imagen");
                    }
                }
    
                this.listView1.View = View.LargeIcon;
    
                this.imageList1.ImageSize = new Size(160, 110);
    
                this.listView1.LargeImageList = this.imageList1;
    
             
                for (int j = 0; j < this.imageList1.Images.Count; j++)
                {
                    ListViewItem item = new ListViewItem();
    
                    item.ImageIndex = j;
    
                    this.listView1.Items.Add(item);
                }
    
               
            }
    
            private void button2_Click(object sender, EventArgs e)
            {//limpiar
                this.listView1.Clear();
                this.imageList1.Images.Clear();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {//borrar seleccionada
    
                while (listView1.Items.Count > 0)
                {
                    ListViewItem item = listView1.Items[0];
    
                    for (int i = item.Index + 1; i < listView1.Items.Count; i++)
                    {
                        
                        listView1.Items[i].ImageIndex--;
                    }
                    listView1.Items.Remove(item);
    
                    Image img = imageList1.Images[item.ImageIndex];
                    imageList1.Images.RemoveAt(item.ImageIndex);
                    img.Dispose();
                }
    
    //damn borra todo
    
                
            }
    
            }

    Gracias por usar los foros de MSDN 

    Pablo Rubio

    __________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

     

    Hola Pablo gracias por la respuesta...

    mira la idea es llenar una lista de usuarios(en un chat) y obtener el avatar desde un directorio en el cual las imagenes tienen el mismo nombre del usuario (para que sea más fácil) en tu ejemplo se llena un listview con las imagenes que hay en una carpeta, bien... asi ya lo estaba haciendo pero como puedo hacer para que al llenarme el imagelist me guarde junto con la imagen el key para despues buscar el que coincida con el usuario y asi asignarlo. Ejemplo

                DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory + "/avatars/");
                foreach (FileInfo file in dir.GetFiles())
                {
                    try
                    {

                      //Aki agrego la imagen al imagelist pero como agrego tambien el keycon file.Name para compararlo con el usuario

                        ImageAvatar.Images.Add(Image.FromFile(file.FullName));
                    }
                    catch { }
                }
                this.imageList1.ImageSize = new Size(32, 32);


    De nuevo gracias. Saludos

    /////////////////////////////////////////////////////////

    Respondiendo mi propia pregunta, ya encontre la manera

    busque la imagen por la clave

                int imagesCount = ImageAvatar.Images.Count;
                int i = 0;

                while (i < imagesCount)
                {
                    if (ImageAvatar.Images.Keys[i].ToString() == NickName.Text + ".jpg")
                    {
                        ListViewItem lvi = new ListViewItem();
                        lvi.ImageIndex = i;
                        lvi.Text = NickName.Text;
                        foreach (ListViewItem usuario in UserList.Items)
                        {
                            if (usuario.Text.Equals(NickName.Text))
                            {
                                   usuario.ImageIndex = i;
                            }
                        }
                    }
                    i++;
                }
    Saludos


    • Marcado como respuesta Hackerprod lunes, 30 de julio de 2018 18:28
    • Editado Hackerprod lunes, 30 de julio de 2018 18:31
    lunes, 30 de julio de 2018 17:04