Ich versuche, Spaltenfilterung auf einem ListView
Steuerelement (Windows Forms/C#/win32 über pinvoke) zu implementieren, auf dieselbe Weise wie Windows Explorer. Für diejenigen, die es nicht benutzt haben, sieht es wie folgt aus:Wie Windows Explorer-Spaltenfilterung auf ListView-Steuerkopfzeile replizieren
Wenn Sie über die Säule schweben ein Drop-Header Pfeil nach unten angezeigt wird, den Abfall klicken, wird unten ein Kontextmenü mit verschiedenen Filteroptionen. Sobald Sie eine Option mit den Pfeil Bild Änderungen an einem Häkchen Bild ausgewählt, die immer sichtbar ist, ist wie folgt:
ich den Dropdown-Pfeil habe, indem er eine HDM_SETITEM Nachricht an das Listview mit dem HDF_SPLITBUTTON
anzuzeigen Formatflag angegeben. Ich kann auch das Filtermenü anzeigen.
Das Problem, das ich habe, ist, dass ich nicht herausfinden kann, wie man das "Zecke" Bild anzeigt. Nun, abgesehen von der Verwendung von Eigentümer Zeichnung, die wirklich wie ein Overkill scheint. Ich habe die API-Dokumentation für ListView und Header-Steuerelemente durchgelaufen und es scheint keine Windows-Nachricht zu geben, die Sie senden können, um das Bild zu ändern.
um es zu umgehen Ich habe versucht, einen Header-Bild verwenden, dass die Filterung aktiv ist, um anzuzeigen, aber die HDITEM Dokumentation nach Ihnen nicht HDF_IMAGE
oder HDF_BITMAP
zugleich als HDF_SORTUP
oder HDF_SORTDOWN
verwenden können. Also habe ich neue Bilder erstellt, um sowohl den Sortier- als auch den Filterstatus anzugeben, aber jetzt sind alle meine ListView
Elemente um die Größe des Spaltenkopfbilds eingerückt (scheint ein bekanntes Problem mit dem C# ListView
Steuerelement zu sein).
Ich habe etwas gefunden, das vielversprechend aussah: BCM_SETSPLITINFO
lässt Sie die Glyphe einer geteilten Taste einstellen. Jedoch habe ich einen ListView-Header, nicht eine Split-Taste, es sei denn, die Kopfzeile hat Unterfenster, die Split-Schaltflächen sind
So hat jemand Ideen, wie man diese "Tick" -Markierung replizieren, ohne einen vollständigen Besitzer zu implementieren Lösung? schließlich
Dank
Greg
Es sieht aus wie ein ListView, [aber es ist nicht] (http://stackoverflow.com/questions/4089196/netuihwnd-and-directuihwnd). –
Ah! Das würde es erklären, ich habe vorher noch nichts von DirectUIHWND gehört. Kein Wunder, dass es mir mit dem Win32 ListView Steuerelement so schwer gefallen ist. Ich habe es tatsächlich mit Spy ++ versucht, aber ich habe nur so weit herausgefunden, dass der Header ein separates Fenster ist. – Greg