Frage

Mit C # .NET 2.0, ich habe einen Ownerdrawn-Listview, wo ich die OnDrawColumnHeader bin überschreiben, OnDrawItem und OnDrawSubitem Ereignisse. Wenn ich die Eigenschaft Ansicht zu Details der zur Entwurfszeit festgelegt, funktioniert alles wunderbar, und ich kann die Eigenschaft Ansicht wechseln und alle Ansichts-Modi angezeigt werden, wie sie sollten (ich bin nicht Tile Ansicht verwenden). Wenn ich jedoch in jeder anderen Ansicht zu starten, sowohl die Listen- und Detailansichten sind leer.

Ich weiß, dass Sie wahrscheinlich Code sehen wollen, aber es gibt eine Menge davon, so bin ich zögerlich, dass viel zu schreiben, kann aber, falls nötig. Ich bin mehr gespannt, ob jemand zuvor gesehen hat, und / oder vielleicht eine Ahnung davon hat, wie man es beheben. Die View-Eigenschaft wird ein benutzer gespeicherte Einstellung sein, so dass ich in der Detailansicht starten standardmäßig nicht immer in der Lage sein.

War es hilfreich?

Lösung

Die WinForms Listview ist vor allem eine Abstraktionsschicht von der Oberseite des tatsächlichen Windows-Steuerelement, so gibt es Aspekt seines Verhaltens, die, na ja, nicht eingängig ist eine höfliche Art, Dinge zu setzen.

Ich habe eine vage Erinnerung, aus als Delphi-Entwickler in meinen Tagen zurück, dass, wenn Sie Besitzer zeichnen ein Listview sind, werden die Unterelemente der Steuerung nicht tatsächlich bevölkert, es sei denn Ihre Listview in „Details“ Modus ist, wenn Sie laden die Elemente.

Reise versuchen ...

... zwingen die WinForms steuern die darunter liegenden Fenster neu behandeln, nachdem Sie den Anzeigestil ändern. Wenn der Speicher dient, Destroy () ist die Methode, die Sie wollen.

... vorausgesetzt, Sie einen „Refresh“ in Ihrer Anwendung haben, die Daten erneut zu laden, tun Dinge richtig funktionieren, wenn Sie nach dem Ändern des Anzeigestiles auffrischen?

... wenn alle Stricke reißen, bitten ausleihen oder eine Kopie von Charles Petzolds classic auf Windows-Programmierung stehlen.

Andere Tipps

Entweder SubItems nicht hinzugefügt werden, oder Sie haben keine Spalten hinzufügen. Das ist mein erstes Gefühl.

Wenn Sie es richtig konfigurieren den Designer verwenden, gehen Sie einfach in die generierte Designer-Code und sehen, welche Code von Visual Studio emittiert wurde, um es richtig zu arbeiten. Dann nur diesen Code emulieren.

withour Code, gibt es nicht viel gesagt werden kann, aber DrawColumnHeader wird nur aufgerufen, wenn OwnerDraw Eigenschaft auf true gesetzt ist. Nicht sicher, ob es automatisch auf wahr und falsch in Abhängigkeit von der View-Eigenschaft, aber es lohnt sich, einen Versuch zu geben. So stellen Sie sicher OwnerDraw auf true gesetzt ist, bevor die Anwendung zu starten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top