Announcement

Collapse
No announcement yet.

ListView OwnerDraw: Flackern bei Klick

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListView OwnerDraw: Flackern bei Klick

    Hallo,

    ich habe eine ListView in der ich die Items selbst zeichne (mit DrawItem-Event und OwnerDraw auf Fixed gestellt).

    Mein Problem war/ist, dass ich das aktuell selektierte Element blau zeichnen will. Das funktionniert auch indem ich einfach in der DrawItem-Methode abfrage, ob der aktuelle Index der selektierte Index ist.

    Leider wird das vorherige Element dann nicht wieder "abselektiert" sondern bleibt auch blau. Ich habe es bisher so gelöst, dass ich bei einem Klick auf der Liste "Refresh()" aufrufe, nur leider beginnt dann die Ansicht bei jedem Klick zu flackern.

    Weiß da jemand eine bessere Methode um die Items zu zeichnen?!

    Gruß

  • #2
    Ok...ich konnte das Problem selbst lösen:

    Ich merke mir in der "SelectedIndexChanged"-Methode jeweils den letzten Index des Items, welches selektiert war. Dann verwende ich die GetItemRectangle Methode um die "alten" Bounds zu bekommen und zeichne so manuell das nun abselektierte Item.

    Hier ist der Code dazu:

    Code:
    if(_lastIndex!=-1)
       listBox_DrawItem(null, new DrawItemEventArgs(
          listBox.CreateGraphics(), 
          listBox.Font, 
          listBox.GetItemRectangle(_lastIndex), 
          _lastIndex, 
          DrawItemState.None));
                    
    _lastIndex = listCommands.SelectedIndex;
    Falls jemand dennoch eine bessere Methode kennt, bitte nicht zögern zu antworten!

    Grüße

    Comment

    Working...
    X