首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Listview SelectedIndexChanged问题

Listview SelectedIndexChanged问题
EN

Stack Overflow用户
提问于 2009-09-30 13:52:03
回答 2查看 899关注 0票数 0

我有一个Listview和加载缩略图。我想选择缩略图来将实际的图像显示到用户控件中。当我选择第一个图像时,它不会显示在用户控件中。但是当我选择第三张图片时,它工作得很好。下面的代码有什么问题?

代码语言:javascript
复制
            string pname;
            Image myImage;
           for (i = 0; i <= files.Length ; i++)
            {
                pname = System.IO.Path.GetFullPath(files[i]);
                myImage = Image.FromFile(pname);
                ImgListView.Images.Add(getThumbnaiImage(ImgListView.ImageSize.Width, myImage));
                myImage = null;
            }


          for (i = 0; i <= files.Length ; i++)
            {
                fname = System.IO.Path.GetFileName(files[i]);
                ListViewItem lvwItem = new ListViewItem(fname, i);
                lvwItem.Tag = files[i];

                lstThumbNailView.Items.AddRange(new ListViewItem[] { lvwItem });
                lvwItem = null;
            }

private void listView_SelectedIndexChanged(Object sender, EventArgs e)
{
   ListView.SelectedListViewItemCollection selectedItems = lstThumbNailView.SelectedItems;

        ListViewItem lvi = lstThumbNailView.SelectedItems[0];
        string s = (string)lvi .Tag;
        this.viewer1.Image = Image.FromFile(s);

}
EN

回答 2

Stack Overflow用户

发布于 2009-09-30 13:55:31

循环不应该是:

代码语言:javascript
复制
      for (i = 0; i < files.Length ; i++)

这是具有Length属性的数组/集合的标准模式。

票数 2
EN

Stack Overflow用户

发布于 2009-09-30 15:01:26

这就是我想要做的。

private void backgroundWorker_DoWork(对象发送者,DoWorkEventArgs e) { try{ int backgroundWorker_DoWork= 0;

代码语言:javascript
复制
        string pname;
        Image myImage;
        max_length = files.Length - 2;

        for (i = 0; i < files.Length; i++)
        {
          ProgressInfo info = new ProgressInfo();

            pname = System.IO.Path.GetFullPath(files[i]);
            myImage = Image.FromFile(pname);
            info.Image = myImage;
            info.ImageIndex = i;
            backgroundWorker1.ReportProgress(progress, info);
            myImage = null;
        }

       }
       catch (TargetInvocationException tiEx)
       {
           throw tiEx.InnerException;
       }
       catch (Exception ex)
       {
           throw ex.InnerException;
       }
    }


  private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        try
        {
             ProgressInfo img = e.UserState as ProgressInfo;
            //Set image to ListView here.
            ImgListView.Images.Add(getThumbnaiImage(ImgListView.ImageSize.Width, img.Image));
            fname = System.IO.Path.GetFileName(files[img.ImageIndex]);
            ListViewItem lvwItem = new ListViewItem(fname, img.ImageIndex);
            lvwItem.Tag = files[i];

            lstThumbNailView.Items.AddRange(new ListViewItem[] { lvwItem });

        }
        catch (TargetInvocationException tiEx)
        {
            throw tiEx.InnerException;
        }
        catch (Exception ex)
        {
            throw ex.InnerException;
        }
    }

class ProgressInfo
{
    public Image m_Image;
    public int m_ImageIndex;
          public Image Image
    {
        set { m_Image = value; }
        get { return m_Image; }
    }

    public int ImageIndex
    {
        set { m_ImageIndex = value; }
        get { return m_ImageIndex; }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1498256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档