2008-08-17 1 views
7

Ich habe ein ListView-Steuerelement, und ich versuche herauszufinden, die einfachste/beste Möglichkeit, die ausgewählten Zeile (n) zu ändern, ohne Ausblenden die ausgewählte Reihen).Deaktivieren einer ListView in C#, aber immer noch die aktuelle Auswahl

Ich weiß, es gibt eine HideSelection Eigenschaft, aber das funktioniert nur, wenn die ListView noch aktiviert ist (aber nicht fokussiert). Ich brauche die Auswahl, um auch dann sichtbar zu sein, wenn die ListView deaktiviert ist.

Wie kann ich das umsetzen?

Antwort

2

Sie können auch die Ownerdraw von ListView erstellen. Sie haben dann vollständige Kontrolle darüber, wie die Elemente aussehen, ob sie ausgewählt sind oder nicht, oder ob der ListView selbst aktiviert ist oder nicht. Die DrawListViewItemEventArgs bietet eine Möglichkeit, die ListView zu bitten, einzelne Teile des Elements zu zeichnen, so dass Sie nur die für Sie interessanten Bits zeichnen müssen. Beispielsweise können Sie den Hintergrund des Elements zeichnen, aber dem ListView zum Zeichnen überlassen der Text.

1

Es gibt zwei Optionen, ändern Sie die ausgewählten Zeilen deaktiviert Farben. Oder ändern Sie alle anderen Zeilen, um zu simulieren, dass sie außer dem ausgewählten deaktiviert sind. Die erste Option ist offensichtlich die einfachste und die zweite Option wird offensichtlich einige zusätzliche Schutzmaßnahmen benötigen.

Ich habe tatsächlich die erste Option vor und es funktioniert ganz gut. Sie müssen nur daran denken, die Farben auf die Standardwerte zurückzusetzen, falls später eine andere Zeile ausgewählt wird.

0

Implement SelectedIndexChanged und tun dies

private void listViewABC_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     listViewABC.SelectedItems.Clear(); 
    } 
Verwandte Themen