Nützliches Custom Control für Windows Forms Anwendungen

Nützliches Custom Control für Windows Forms Anwendungen

Der heutige Eintrag richtet sich an die C#/VB.NET Programmierer, die mit Windows Forms arbeiten. Da dies auch seit geraumer Zeit mein Hautpeinsatzgebiet ist, macht es mir besonders Spaß, heute etwas darüber zu erzählen. Ich möchte euch eine Custom Windows Forms Control vorstellen, die von einem gewissen Philip Piper erstellt wurde. Der Name dieses kleinen Wunders ist ObjectListView. Ich muss zugeben der Name ist eher funktional als episch, aber dennoch sollte dieses Custom Control bei jedem WinForms Programmierer im Repertoire sein. Die ObjectListView, ab sofort oLvw genannt, unterscheidet sich stark von der altbekannten ListView. Die oLvw ist wie der Name bereits andeutet stark objektorientiert und von Hause aus aktiv. Hier ein kleines Schaubild vom Prozess, den ich gleich erklären werde:

Source

Man kann sich das ganze grob vereinfacht so vorstellen: Man übergibt der oLvw ein Objektmodel, diese wandelt alle Objekteigenschaften in Strings um und stellt sie dar. Dieser Darstellungsprozess verläuft von vorneherein deklarativ, d.h. man beschreibt der Liste ein einziges Mal  was sie für ein Objekt erhält und was sie damit anstellen soll, diese hält sich an eure Beschreibungen und macht von da an alles automatisch. Das ganze alte System, das auf ListViewItem.Add()  basierte, fällt komplett weg. Jegliche neue Daten, die in die oLvw sollen, werden dem Quellobjekt hinzugefügt, die Liste verarbeitet das ganze wieder nach eurem Schema und stellt es dar.

Hier ein kleines Beispiel von mir: Angenommen wir haben uns eine Datenbank mit unseren bisher angesehenen Filmen erstellt und wollen diese nun in einem kleinen Tool darstellen. So etwas ist prädestiniert für die oLvw, da jegliches Update der Datenbank ein Update unserer Datenquelle bedeutet und unsere oLvw sich somit um den Rest kümmert.

  • Gehen wir davon aus, dass wir bereits eine Datenbankverknüpfung erstellt haben inklusive Tableadapter. Einfacherweise fügen wir die oLvw per Designer unserer Form hinzu. Nun kommen wir zu einer sehr überschaubaren Anzahl an Code Zeilen:
    Drei Zeilen Code und wir erhalten das unten gezeigte Bild ohne, dass wir explizit Items adden mussten:

  • Das ganze ist nun einfach und funktional, aber wir wollen, dass es auch schön aussieht. Daher gibt es auch hierfür ein paar kleine Tricks mit denen wir unsere Tabellen verschönern und besser ordnen können:

  • Weiterhin gibt es noch spaltenspezifische Funktionen, mit denen man den Inhalt der Spalte visuell verändern kann. Es gibt zum einen die Möglichkeit solche sogenannten Renderer selbst zu erstellen oder einen aus bereits vorimplementierten zu nutzen. Hier zeige ich euch wie man einfach durch einen vorimplentierten Renderer die Bewertungen in Sterne umwandeln kann:

Das war es zu dem kleinen Beispiel. Es ist nur ein ganz kleiner Einblick von dem, was dieses Custom Control überhaupt kann. Es gibt noch diverse andere Renderer sowie noch weitere Abwandlungen der oLvw, die in der selben DLL enthalten sind. Diese sind für verschiedene Projekte besser geeignet als andere und umgekehrt, beispielsweise updatet sich die DataListView von selbst, sobald die Datasource sich ändert. Alle verschiedenen ListViews und Designmöglichkeiten zu erklären, würde den Rahmen eines Blogeintrags sprengen, daher kann ich euch nur ans Herz legen, diese auf der offiziellen Seite von der ObjectListView nachzuschauen. Wenn ihr weitere Fragen habt, könnt ihr diese gerne hier stellen oder auf Facebook unter dem Post ein Kommentar hinterlassen. Wer sehr spezifische Fragen hat, kann sich auch im offiziellen Diskussionsthread melden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.