c# Listview с изображениями столбец странное поведение - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть представление списка, в котором я загружаю некоторые изображения из папки через элемент управления imagelist. когда я инициализирую форму, содержащую просмотр списка, я вызываю метод CaricaListBox ()

private void CaricaListBox()

    {
      if (TxtSourceFolder.FullText != string.Empty)
      {
        LstFile.Items.Clear();
        foreach (string file in Directory.EnumerateFiles(TxtSourceFolder.FullText, "*.*").Where(s => s.EndsWith(".png") || s.EndsWith(".jpg")))
        {
          Image ImgObj;
          using (var bmpTemp = new Bitmap(file))
          {
            ImgObj = new Bitmap(bmpTemp);
          }
          if (ImgObj.Width > ImgObj.Height)
          {
            imageList.Images.Add(Image.FromFile(file));
            var LstI = LstFile.Items.Add(" ", imageList.Images.Count - 1); //(Path.GetFileName(file), imageList.Images.Count - 1);
            LstI.SubItems.Add(Path.GetFileName(file));
          }
          ImgObj.Dispose();
        }
      }
    }

, когда форма показывается, это выглядит следующим образом enter image description here, и это то, что я хочу. Если нажать на папку изменений, и я снова запускаю тот же метод для загрузки списка, у меня будет следующий результат: enter image description here, показывающий только 1 столбец. если я увеличу представление списка, я вижу следующее: enter image description here, поэтому ничего не меняется

что я делаю не так? Любое предложение?

Tks заранее Fabrizio

Отредактировано:

 private void CaricaListBox()
    {
      if (TxtSourceFolder.FullText != string.Empty)
      {
        LstFile.Items.Clear();
        foreach (string file in Directory.EnumerateFiles(TxtSourceFolder.FullText, "*.*").Where(s => s.EndsWith(".png") || s.EndsWith(".jpg")))
        {
          var bmpTemp = Image.FromFile(file);
          if (bmpTemp.Width > bmpTemp.Height)
          {
            using (var tempImage = bmpTemp)
            {
              Bitmap bmp = new Bitmap(192, 76);
              using (Graphics g = Graphics.FromImage(bmp))
              {
                g.DrawImage(tempImage, new Rectangle(0, 0, bmp.Width, bmp.Height));
              }
              imageList.Images.Add(bmp);
              var LstI = LstFile.Items.Add(" ", imageList.Images.Count - 1); 
              LstI.SubItems.Add(Path.GetFileName(file));
            }
          }
          else bmpTemp.Dispose();
        }
      }
      Conta();
    }

это экономит память .. но все еще возникают проблемы с визуализацией, когда метод вызывается во второй раз. только что заметил, что если я вызываю метод, когда форма еще не нарисована, он показывает 2 столбца, если я вызываю метод, когда форма уже нарисована, я вижу 1 столбец

Fabrizio

...