Autor Beitrag
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 29.11.05 20:35 
Hallo!

Ich habe eine Listview im View-Style "Tile". Dort werden (in Gruppen sortiert) die Namen von Grafikdateien eingefügt. Auf Wunsch sollen in der Listview nun auch Thumbnails angezeigt werden. Das geht so:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
        lv_files.BeginUpdate();

        lv_files.LargeImageList = imageList1;

        progressBar1.Maximum = lv_files.Items.Count;
        progressBar1.Value = 0;
        foreach (ListViewItem lvi in lv_files.Items)
        {
          string file = ((Resizer)lvi.Tag).Sourcefile;

          if (!imageList1.Images.ContainsKey(file))
          {
            Bitmap oldBmp = (Bitmap)Bitmap.FromFile(file);
            Image im = oldBmp.GetThumbnailImage(imageList1.ImageSize.Width, imageList1.ImageSize.Height, delegate { return false; }, IntPtr.Zero);

            imageList1.Images.Add(file, im);
          }

          lvi.ImageKey = file;

          progressBar1.Value += 1;
          Application.DoEvents();
        }
      
        lv_files.EndUpdate();
        
        progressBar1.Value = 0;

Die Klasse "Resizer" soll Euch dabei nicht stören, die hält einen Haufen Daten inkl. des Dateinamens. Das klappt ansich auch wunderbar, die Bilder werden erzeugt und angezeigt. Leider werden die Items aber nicht neu angeordnet, sodass der Platz nicht ausreicht und die einzelnen Items sich überschneiden. AutoArrange ist auf "true".

Wie kann ich das Problem lösen?

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 01.12.05 19:44 
Hallo!

Ich habe die TileSize der Listview nun manuell so gesetzt, dass es passt. Also sowas wie:
ausblenden C#-Quelltext
1:
lv_files.TileSize = new Size(250, imageList1.ImageSize.Height + 15);					


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christian S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 03.12.05 19:12 
Nachtrag: Es funktioniert auch, den Parent der ListView einmal auf null und wieder zurückzusetzen. Das ist zwar irgendwie wenig schön, spart es einem aber, die Größe der Items manuell zu setzen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".