Проблема с изображением в ListView в форме окна (C #) - PullRequest
0 голосов
/ 04 сентября 2011

Я создаю интерфейс окна формы, состоящий из чего-то вроде файлового браузера (ComboBox и ListView с изображением в первом столбце каждого элемента), представление ListView, которое я использовал, - Detail, я добавил изображения в SmallImageList, уже проверьте, что изображения не равны NULL, и установите индекс изображения для каждого элемента, но изображения по-прежнему не отображаются.

это мой код

        main_fileView.View = View.Details;
        string[] files;
        if (main_dirComboBox.Text != "")
        {
            string parent = main_dirComboBox.Text;
            if (System.IO.Directory.Exists(parent))
            {
                files = System.IO.Directory.GetFiles(parent);
                if (files != null)
                {
                    main_fileView.Items.Clear();
                    ImageList img_list = new ImageList();
                    int n = 0;


                    ImageList small_img_list = new ImageList();
                    ImageList large_img_list = new ImageList();

                    for (int i = 0; i < files.Length; i++)
                    {
                        string file_name = files[i].Substring(files[i].LastIndexOf('\\') + 1, files[i].Length - (files[i].LastIndexOf('\\') + 1));
                        string file_type = file_name.Substring(file_name.LastIndexOf('.'), file_name.Length - file_name.LastIndexOf('.'));
                        //get icon image from system
                        Icon smallicon = Icons.IconFromExtension(file_type, Icons.SystemIconSize.Small);
                        Icon largelicon = Icons.IconFromExtension(file_type, Icons.SystemIconSize.Large);
                        small_img_list.Images.Add(smallicon);
                        large_img_list.Images.Add(largelicon);

                    }

                    main_fileView.SmallImageList = small_img_list;
                    main_fileView.LargeImageList = large_img_list;

                    foreach (string file in files)
                    {

                        string file_name = file.Substring(file.LastIndexOf('\\')+1,file.Length-(file.LastIndexOf('\\')+1));
                        System.IO.FileInfo fileInfo = new System.IO.FileInfo(file);
                        string file_size = fileInfo.Length/1000+" kB";
                        string file_datemodified = fileInfo.LastWriteTime.ToString();
                        string file_createDate = fileInfo.CreationTime.ToString();

                        string[] item_ = { file_name, file_size, file_datemodified, file_createDate };

                        ListViewItem item = new ListViewItem(item_,n);
                        n++;
                        main_fileView.Items.Add(item);

                    }

                }
            }
        }

я пытаюсь заменить

ListViewItem item = new ListViewItem(item_,n);

с

ListViewItem item = new ListViewItem(file_name, n);
                        item.SubItems.Add(file_size);
                        item.SubItems.Add(file_datemodified);
                        item.SubItems.Add(file_createDate);

, но результат все тот же, перед каждым текстом в первом столбце есть пробелы, но изображение не отображается.

LAST EDITED

Наконец-то я понял, это моя ошибка, проблема не в этом пути кода, в другом пути кода создается новый ImageList, который я забыл закомментировать.перед тестом этот код работает нормально, СПАСИБО всем за ответ.

пс.Я не могу ответить на свой вопрос в течение 8 часов из-за слишком маленькой репутации

1 Ответ

0 голосов
/ 04 сентября 2011

Учитывая, что вы показываете в ListView детали файла, выбранного в ComboBox, вы используете Details view. Другими словами, вы видите сетку на пользовательском интерфейсе.

В этом случае вы должны указать специальный столбец для строки и вставить нужное изображение в эту ячейку.

Здесь вы можете найти более сложное решение:

ListView с изображением на подэлементах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...