[C#] ImageIndex in ListView

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ik zit hier nu al een tijdje te kutten met iets super-simpels, maar het wil me maar niet lukken.

Ik heb een ListView waarvan de viewstyle op 'Details' staat ingesteld. Ik heb ook een imagelist gehangen aan de LargeImageList, SmallImageList properties van die listview.

Als ik nu een listitem wil toevoegen, dan zet ik ook de ImageIndex property van dat item, maar er wordt geen icoon getoond. Het item wordt wel toegevoegd, en is wel zichtbaar, echter de image krijg ik maar niet te zien.

Ik zie totaal niet wat ik verkeerd doe, de code om een item toe te voegen ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void CreateListItem( ListView aListView )
{
    ListViewItem                aItem;
        
    aItem = new ListViewItem();
        
    aItem.ImageIndex     = 1; 
    aItem.Tag           = this._categorieId;
    aItem.Text          = this._categorie;
    aItem.SubItems.Add (this._omschrijving);
    aItem.SubItems.Add (Convert.ToDecimal(this._bedrag).ToString("c"));
            
    aListView.Items.Add(aItem);
            
}


In m'n imagelist zitten er 3 images, dus die 1 is wel degelijk een bestaande index.

Als ik echter de waarde van de ImageList property van het ListViewItem ga uitlezen, dan zie ik dat die op null staat ingesteld.
code:
1
aItem.ImageList

is dus null. Logisch eigenlijk, want het item was op dat moment niet aan de listview toegewezen.
Als ik die property ga gaan uitlezen nadat ik het item aan de listview heb toegevoegd, dan is die property wel ingevuld (zoals het hoort).

De images verschijnen dus niet bij de items die ik at runtime toevoeg aan m'n listview.
Ik heb echter eens -bij wijze van test- een item aan m'n listview toegevoegd at design time, en de ImageIndex van dat item op 1 gezet, en dan krijg ik wel een listitem met een afbeelding te zien.

* whoami is a bit confused. Wat doe ik verkeerd, of zie ik over het hoofd?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Update:

Als ik een button op m'n form gooi, en ik schrijf in de OnClick eventhandler deze code:

code:
1
MyListview.Items[0].ImageIndex = 1;


dan krijg ik ook geen afbeelding te zien voor het eerste item.

https://fgheysels.github.io/


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Is er wel ruimte opengelaten voor de afbeelding in de eerste kolom, of is de uitlijning van de text zoals normaal? Als je een niet-bestaande imageindex gebruikt wordt er wel ruimte voor gereserveerd.
Werkt die imagelist wel als je 'm bijvoorvbeeld gebruikt om een image op een butten te krijgen?

Ik heb er zelf (met VB.NET) nooit probelem mee gehad.

| Toen / Nu


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
SuperRembo schreef op 10 januari 2004 @ 15:24:
Is er wel ruimte opengelaten voor de afbeelding in de eerste kolom, of is de uitlijning van de text zoals normaal? Als je een niet-bestaande imageindex gebruikt wordt er wel ruimte voor gereserveerd.
Er is ruimte voor gereserveerd zie ik, maar de image verschijnt niet.
Als ik debug zie ik dat de ImageList 3 items bevat.
Werkt die imagelist wel als je 'm bijvoorvbeeld gebruikt om een image op een butten te krijgen?
Als ik at-designtime diezelfde imagelist gebruik voor een button, en dan de imageindex van die button zet, dan krijgt die button een image.
Als ik echter at - runtime de imagelist property van een button wil 'setten', en een imageindex, dan werkt het niet.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik geef de image mee met de add call: (in dit geval dus image 0)
C#:
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
28
29
30
31
32
33
for(int i=0;i<_entityToEdit.Fields.Count;i++)
{
    EntityFieldDefinition fieldToAdd = _entityToEdit.Fields[i];

    ListViewItem newRow = _fieldsListView.Items.Add(fieldToAdd.FieldName, 0);
    _fieldToListItem.Add(fieldToAdd, newRow);
    newRow.SubItems.Add(fieldToAdd.FieldIndex.ToString());
    newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.DBTypeAsNETType.ToString());
    newRow.SubItems.Add(Boolean2CleanString(fieldToAdd.IsReadOnly));
    newRow.SubItems.Add(fieldToAdd.MappedField.FieldName);
    newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.DBTypeAsString);
    newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.Length.ToString());
    newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.Precision.ToString());
    newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.Scale.ToString());
    if(fieldToAdd.MappedField.TypeDefinition.IsOfUserDefinedType)
    {
        newRow.SubItems.Add(fieldToAdd.MappedField.TypeDefinition.UserDefinedTypeCatalog + "." + 
            fieldToAdd.MappedField.TypeDefinition.UserDefinedTypeOwner + "." + fieldToAdd.MappedField.TypeDefinition.UserDefinedTypeName);
    }
    else
    {
        newRow.SubItems.Add("");
    }
    newRow.SubItems.Add(Boolean2CleanString(fieldToAdd.IsPrimaryKeyField));
    newRow.SubItems.Add(Boolean2CleanString(((DBTableField)fieldToAdd.MappedField).IsNullable));
    newRow.SubItems.Add(Boolean2CleanString(((DBTableField)fieldToAdd.MappedField).IsComputed));
    newRow.SubItems.Add(Boolean2CleanString(((DBTableField)fieldToAdd.MappedField).IsTimeStamp));
    newRow.SubItems.Add(Boolean2CleanString(fieldToAdd.IsIdentity));
    newRow.SubItems.Add(fieldToAdd.IdentityValueSequenceName);

    // add reference to viewed object in tag.
    newRow.Tag = fieldToAdd;
}

[ Voor 3% gewijzigd door EfBe op 10-01-2004 17:26 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ook dat biedt geen soelaas. Zeer vreemd, misschien heeft het te maken met de images in m'n imagelist.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Hoe groot zijn die images in je image list? hier zijn ze 16x16 8bpp (16x16 jpeg jes) 256kleuren GIFjes. (Depth8bit)

* EfBe had niet goed gekeken. |:(

[ Voor 30% gewijzigd door EfBe op 11-01-2004 12:28 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
In dit geval zijn het BMP files, 16x16. Ik zal het eens moeten proberen met andere images.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Update: ik heb GIFjes gebruikt ipv JPGjes zie ik nu. Direct vanuit photoshop gesaved, in de imagelist hangen, en altijd werken.

Type is wel Depth8bit, dus 256kleuren. Wellicht dat dat niet goed gaat bij je: dat je 8bpp bmptjes hebt gebruikt.

Ik zal even mn andere posting editen.

[ Voor 73% gewijzigd door EfBe op 11-01-2004 12:27 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Ligt het misschien aan je resource file? Wat gebeurt er als je at runtime een ImageList maakt met een paar SystemIcons erin?

| Toen / Nu


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Strange, ik heb nu even een 8x8 jpg file gemaakt, die ik gebruikt heb in m'n image-list en dan werkt het wel.
De oplossing heb ik nu dus al, maar wat zou de oorzaak kunnen zijn? :?

https://fgheysels.github.io/


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Corrupte resourcefile?

| Toen / Nu

Pagina: 1