Personensammlung

Ein eigener Datei-Typ

In vielen Programmen ist das Öffnen und Speichern von Dateien notwendig. Dieses Beispiel zeigt, wie man Inhalte einer Liste als XML-Datei speichern und wieder lesen kann und wie dafür ein Menü und die zugehörigen Funktionen aussehen könnten.

Windows Form des Personensammlungs-Projekts

Daneben wird ein eigenes Anwendungsicon mit den Dateien assoziiert, nach Doppelklick auf eine gespeicherte Datei öffnet sich die zugehörige Anwendung.

Verknüpfung zwischen Datei und Icon

Im Bild oben ist eine Datendatei mit assoziiertem Icon und die zugehörige geöffnete Datei in der Windows Form zu sehen. In der Klasse "Anwendungsdaten" sind alle Informationen zur Anwendung wie Name, Dateiendung und Icon der Anwendung festgelegt. Mit Hilfe dieser Klasse wird ein Registry-Eintrag erstellt, der dafür sorgt, dass der Computer weis, welches Programm gestartet werden muss, wenn man eine Datei öffnen will.

Ein Problem ergibt sich aber bei Windows Vista. Die User Account Control-Technik verhindert den Schreibzugriff für alle Nicht-Administratoren auf den Classes-Abschnitt der Registry. Zu umgehen ist dies nur mit einem Installationsprogramm, das Administrator-Rechte verlangt, dann kann man auch in die Registry schreiben. In diesem Beispiel wird das Schreiben in die Registry bei jedem Programmstart versucht. Mit einem Try-Catch-Block umgehe ich eine Fehlermeldung, wenn man das Programm als Nicht-Administrator ausführt. Wenn man also unter Vista eine Programmverknüpfung haben will, muss man nur in den /bin/debug-Ordner gehen und die Exe einmal als Administrator starten (im Bild unten zu sehen).

Programm als Administrator ausführen, um Zugriff auf die Registry zu erhalten

Ansonsten zeigt diese Demo, wie man Daten als Liste im ListView anzeigen und sortieren kann, sie enthält ein "PersonenListViewItem", dass sich bei Änderungen von Eigenschaften einer Person (Nachname, Vorname...) selbst aktualisiert.

P.S. Eigentlich ist das immer wieder dieselbe Prozedur, wenn man ein Menü zum Öffnen und Speichern von Dateien aufbaut. Warum macht man sich also nicht einfach ein Interface, das die Funktionen zum Öffnen und Speichern einer Datei festlegt, und dazu einen Datei-Verwalter, der mit dem Menü kommuniziert? Dies könnte man bequem in jede Anwendung einbinden... Das ist aber eine Idee für später.