Używam SetWindowTheme i SendMessage, aby widok listy .net wyglądał jak widok listy w stylu Vista, ale formant .net nadal ma przerywaną ramkę zaznaczenia wokół wybranego elementu:Jak usunąć krawędź zaznaczenia na ListViewItem
Wybrane pozycje w Eksploratorze ListView nie masz tego obramowanie wokół nich. Jak mogę go usunąć?
Windows Explorer:
Edit: Rozwiązanie:
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);
Wydaje się, że ta właściwość jest ustawiona na false domyślnie. – Ucodia
Podczas gdy ShowFocusCues sam nie działał, WM_CHANGEUISTATE wymienione na tej stronie MSDN doprowadziło mnie do właściwej odpowiedzi. Wysyłając wiadomość WM_CHANGEUISTATE z UISF_HIDEFOCUS, udało mi się pozbyć prostokąta skupienia. – Telanor
@Telanor, proszę zaktualizować pytanie za pomocą kodu dostępu do swojego rozwiązania – Joe