如何在列表视图控件中加载具有原始名称的图像,并通过单击获取图像名称

本文关键字:图像 获取 单击 原始 视图 列表 控件 加载 | 更新日期: 2023-09-27 18:21:57

我正在创建一个简单的图像库,在这里我需要使用原始名称从目录加载的图像。我使用了图像列表和列表视图控件来完成这个任务。首先,我在图像视图控件中加载图像,并通过创建缩略图在列表视图控件中显示图像。

我无法在列表视图控件中获取图像的原始名称。我还想在点击图片时获得图片的名称。

这是我的代码

 private void Form1_Load(object sender, EventArgs e)
    {
        DirectoryInfo dir = new DirectoryInfo(@"E:'mypics");
        foreach (FileInfo file in dir.GetFiles())
        {
            imageList1.Images.Add(Image.FromFile(file.FullName));
        }
        listView1.View = View.LargeIcon;
        imageList1.ImageSize = new Size(100, 100);
        listView1.LargeImageList = this.imageList1;
        ListViewItem item;
        for (int i = 0; i < this.imageList1.Images.Count; i++)
        {
            item = new ListViewItem();
            item.ImageIndex = i;
            item.Text = "Image " + i.ToString();
            listView1.Items.Add(item);
        }
    }

如何在列表视图控件中加载具有原始名称的图像,并通过单击获取图像名称

在ListView控件中显示文件:

dir = new DirectoryInfo(Server.MapPath("~/Images/"));
lvImages.DataSource = dir.GetFiles("*.*");
lvImages.DataBind();

设计中(显示文件名):

<asp:Literal ID="ltrImagePath" runat="server" Text='<%# Container.DataItem.ToString() %>'></asp:Literal>

我非常感谢@Volodymyr Melnychuk,他指导我达到了要求。

private列表文件名;private void Form1_Load(对象发送方,EventArgs e){_filename=new List();

        DirectoryInfo dir = new DirectoryInfo(@"E:'mypics");
        foreach (FileInfo file in dir.GetFiles())
        {
            var image = Image.FromFile(file.FullName);
            _filenames.Add(file.Name);
            imageList1.Images.Add(image);
        }
        listView1.View = View.LargeIcon;
        imageList1.ImageSize = new Size(100, 150);
        listView1.LargeImageList = imageList1;
        for (int i = 0; i < imageList1.Images.Count; i++)
        {
            var item = new ListViewItem();
            item.ImageIndex = i;
            item.Text =_filenames[i];
            listView1.Items.Add(item);
        }
    }

他上面的代码是有效的,但后来我需要双击列表视图项名称。我在MSDN上找到了一些帮助。

这是代码。

     private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
          {
           if (listView1.SelectedItems.Count == 1)
        {
           MessageBox.Show(listView1.SelectedItems[0].Text);
        }
    }