Frage

Ich habe ein ListView-Steuerelement und versuche herauszufinden, wie ich das Ändern der ausgewählten Zeile(n) am einfachsten/besten verbieten kann, ohne verstecken die ausgewählte(n) Zeile(n).

Ich weiß, dass es eine gibt HideSelection Eigenschaft, aber das funktioniert nur, wenn die ListView ist immer noch aktiviert (aber nicht fokussiert).Ich möchte, dass die Auswahl auch dann sichtbar ist, wenn die ListView deaktiviert ist.

Wie kann ich das umsetzen?

War es hilfreich?

Lösung

Sie können auch den ListView-Ownerdraw erstellen.Sie haben dann die vollständige Kontrolle darüber, wie die Elemente aussehen, unabhängig davon, ob sie ausgewählt sind oder nicht oder ob die ListView selbst aktiviert ist oder nicht.Mit DrawListViewItemEventArgs können Sie ListView auffordern, einzelne Teile des Elements zu zeichnen, sodass Sie nur die Teile zeichnen müssen, die Sie interessieren.Sie können beispielsweise den Hintergrund des Elements zeichnen, es aber der ListView überlassen, den Text zu zeichnen.

Andere Tipps

Es gibt zwei Möglichkeiten: Ändern Sie die deaktivierten Farben der ausgewählten Zeilen.Oder ändern Sie alle anderen Zeilen, um zu simulieren, dass sie außer der ausgewählten deaktiviert sind.Die erste Option ist offensichtlich die einfachste und die zweite Option erfordert offensichtlich zusätzliche Schutzmaßnahmen.

Ich habe die erste Option tatsächlich schon einmal gemacht und sie funktioniert ganz gut.Sie müssen nur daran denken, die Farben wieder auf die Standardwerte zurückzusetzen, falls später im Prozess eine andere Zeile ausgewählt wird.

Implementieren Sie SelectedIndexChanged und führen Sie dies aus

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top