Listview без списка изображений? - PullRequest
2 голосов
/ 11 февраля 2012

еще раз у меня есть проблема, которую я не могу найти решение. так вот, у меня есть ListView, отображающий каталоги файлов изображений, я хочу, чтобы просмотр списка отображал эти изображения для этих файлов, проблема в том, что мне также нужно, чтобы изображения изменялись программой на уровне каждого пикселя, поэтому я сделайте это в отдельном потоке, поэтому я хочу взять уже существующий список измененных изображений PictureBox и сопоставить имена файлов с соответствующим изображением. Есть идеи как это сделать?

вот что у меня есть

public static List<PictureBox> ContentItems = new List<PictureBox>();
...
public static string ContentDirectory = "";

    private void FileTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        TreeNode newSelected = e.Node;
        FileList.Items.Clear();
        DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
        ListViewItem.ListViewSubItem[] subItems;
        ListViewItem item = null;

        foreach (FileInfo file in nodeDirInfo.GetFiles())
        {
            item = new ListViewItem(file.Name);
            subItems = new ListViewItem.ListViewSubItem[]
                { new ListViewItem.ListViewSubItem(item, "File"), 
                 new ListViewItem.ListViewSubItem(item, 
                    file.LastAccessTime.ToShortDateString())};

            item.SubItems.AddRange(subItems);
            FileList.Items.Add(item);
        }

        FileList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
    }

1 Ответ

0 голосов
/ 12 февраля 2012

Мне все-таки пришлось использовать список изображений. Вот как я его получил:

    void FileTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        TreeNode newSelected = e.Node;
        FileList.Items.Clear();
        DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag;
        ListViewItem.ListViewSubItem[] subItems;
        ListViewItem item = null;

        ContentImg.Images.Clear();
        int CurrentImg = 0;

        foreach (FileInfo file in nodeDirInfo.GetFiles())
        {
            string fileName = file.Name;
            foreach (PictureBox PB in ContentItems)
            {
                if (fileName == PB.Name)
                {
                    //Get Image
                    ContentImg.Images.Add(PB.Image);

                    item = new ListViewItem(file.Name, CurrentImg);
                    subItems = new ListViewItem.ListViewSubItem[]
                { new ListViewItem.ListViewSubItem(item, "File"), 
                 new ListViewItem.ListViewSubItem(item, 
                    file.LastAccessTime.ToShortDateString())};

                    item.SubItems.AddRange(subItems);
                    FileList.Items.Add(item);
                    CurrentImg += 1;
                }
            }
        }
...