У меня есть представление списка, в котором я загружаю некоторые изображения из папки через элемент управления 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();
}
}
}
, когда форма показывается, это выглядит следующим образом , и это то, что я хочу. Если нажать на папку изменений, и я снова запускаю тот же метод для загрузки списка, у меня будет следующий результат: , показывающий только 1 столбец. если я увеличу представление списка, я вижу следующее: , поэтому ничего не меняется
что я делаю не так? Любое предложение?
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