filename from ListView

My questions is simple but I can't figure it out! I have a listview area which take different pictures. When the user selects a picture I want to get the filename and use this to put the picture onto a large picture box. Can anybody tell me how to do this The problem I am having is that I cannot convert the picture selected to a filename. I have tried:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
pictureBox1.Image = Image.FromFile(listView1.SelectedItems.ToString());
}

But I get the error:
System.IO.FileNotFoundException was unhandled
Message="System.Windows.Forms.ListView+SelectedListViewItemCollection"

Any help would be greatly apprieciated! Thanks

Depesh




Answer this question

filename from ListView

  • patridge

    When no item is selected you get this exception, so you need to check if there is a item selected first:


    ListViewItem item1 = new ListViewItem();

    foreach (FileInfo imagefile in newImages)
    {
    listBox2.Items.Add(Convert.ToString(imagefile.FullName));
    imagename = imagefile.FullName;

    ListViewItem item = new ListViewItem( imagefile.FullName );
    item.Tag = imagefile.FullName;

    listView1.Items.Add( item );
    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {
    if( listView1.SelectedItems.Count > 0 )
    {
    String imagePath = (String)listView1.SelectedItems[0].Tag;
    Console.WriteLine( imagePath );
    }
    else
    {
    // No item was selected.
    }
    }




  • Srock

    Hi, thanks a lot for the help

    I have multiple images going into the Listview box so I did the following:

    ListViewItem item1 = new ListViewItem();

    foreach (FileInfo imagefile in newImages)

    {

    listBox2.Items.Add(Convert.ToString(imagefile.FullName));

    imagename = imagefile.FullName;

    item1.Tag = imagename;

    }

    for (int i = 0; i < imageList1.Images.Count; i++)

    {

    listView1.Items.Add(item1.Tag.ToString(),i);

    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)

    {

    string lvitem = (String)listView1.SelectedItems[0].Tag;

    Console.WriteLine(lvitem);

    //pictureBox1.Image = Image.FromFile(listView1.SelectedItems.ToString());

    }

    But when trying to run it, it stalls and gives the error:

    InvalidArgument=Value of '0' is not valid for 'index'.

    Any ideas

    Thanks again for your help



  • Ian Espiga

    You can use the Tag property of a ListViewItem to store extra thing's like an Image path.

    Adding an item

    ListViewItem item = new ListViewItem( "Image1" );
    item.Tag = @"c:\image1.jpg";

    listView1.Items.Add( item );



    Event code

    private void listView1_SelectedIndexChanged( object sender, EventArgs e )
    {
    // Cast tag to string.
    String filename = (String)listView1.SelectedItems[0].Tag;
    pictureBox1.Image = Image.FromFile( filename );
    }




  • filename from ListView