Ich verwende SetWindowTheme und SendMessage, um eine .net-Listenansicht wie eine Listview im Vista-Stil aussehen zu lassen, aber das Steuerelement .net hat immer noch einen gepunkteten Auswahlrahmen um das ausgewählte Element:Wie kann ich den Auswahlrahmen in einem ListViewItem entfernen?
Ausgewählte Elemente im Explorer Listenansicht nicht über diese Grenze um sie herum. Wie kann ich es entfernen?
Windows Explorer:
Edit: Lösung:
public static int MAKELONG(int wLow, int wHigh)
{
int low = (int)LOWORD(wLow);
short high = LOWORD(wHigh);
int product = 0x00010000 * (int)high;
int makeLong = (int)(low | product);
return makeLong;
}
SendMessage(olv.Handle, WM_CHANGEUISTATE, Program.MAKELONG(UIS_SET, UISF_HIDEFOCUS), 0);
Es scheint, dass diese Eigenschaft standardmäßig auf false gesetzt ist. – Ucodia
Während die ShowFocusCues selbst nicht funktionierte, führte das auf dieser MSDN-Seite aufgelistete WM_CHANGEUISTATE zur richtigen Antwort. Durch Senden einer WM_CHANGEUISTATE-Nachricht mit UISF_HIDEFOCUS konnte ich das Fokusrechteck loswerden. – Telanor
@Telanor, Bitte aktualisieren Sie die Frage mit einem Code-Stub Ihrer Lösung – Joe