Wie kann ich den Auswahlrahmen in einem ListViewItem entfernen?

8

Ich verwende "SetWindowTheme" und "SendMessage", um eine .net-Listenansicht wie eine Listenansicht im Vista-Stil aussehen zu lassen, aber das Steuerelement ".net" hat immer noch einen gepunkteten Auswahlrahmen um das ausgewählte Element:

Ausgewählte Elemente in der Listenansicht des Explorers haben diesen Rahmen nicht um sie herum. Wie kann ich es entfernen?

Windows Explorer:

Bearbeiten: Lösung:

%Vor%     
Telanor 22.04.2010, 14:33
quelle

5 Antworten

10

Telanors Lösung hat für mich funktioniert. Hier ist eine etwas in sich geschlossene Version.

%Vor%     
Mike Fuchs 02.04.2013, 16:04
quelle
2

Einstellung der ListView.ShowFocusCues Eigenschaft zu falscher Hilfe?

    
Josh 22.04.2010 14:37
quelle
2

Wenn Sie die Eigenschaft HotTracking auf true festlegen, wird das Fokusrechteck ausgeblendet. Dies hat den Explorer-Stil auf meinem Win7-Rechner wiederholt:

%Vor%

Achten Sie darauf, dass die Unterstreichung der Elemente ein Nebeneffekt ist.

    
Hans Passant 22.04.2010 16:37
quelle
2

Tun Sie dies die NON P / Invoke Weg ...

Überschreiben Sie Ihr ListView-Steuerelement und fügen Sie Folgendes hinzu:

%Vor%     
series0ne 16.01.2015 09:28
quelle
1

Es scheint nicht, dass es eine bestimmte Möglichkeit zum Ändern von ListViewItem-Stilen mit Windows Forms gibt.

Manchmal ist es nicht möglich, einige Win32-Steuerungsverhalten mithilfe von verwaltetem Code zu ändern. Die einzige Möglichkeit besteht darin, P / Invoke durchzuführen, um bestimmte Verhaltensweisen zu ändern. Ich finde das wirklich schwierig, aber du hast keine andere Wahl. Bei der Entwicklung von Windows Mobile-UIs (gerade mit ListView) bin ich oft auf diese Situation gestoßen.

Ich habe also keine direkte Antwort auf Ihre Frage, aber ich bin mir ziemlich sicher, dass Sie, wenn es nicht möglich ist, Windows Forms zu verwenden, mit P / Invoke arbeiten können. Die einzigen Hinweise, die ich Ihnen geben kann:

Ucodia 22.04.2010 15:41
quelle