Wiederverwendbare Methode für einen Datei- Öffnen- Speichern- Schließen- Dialog und mit Eintrag in der Registry in Windows Vista
Immer wieder muss man Dateien öffnen, speichern und schließen. Das wiederholt sich, und jedes mal neuen Code dafür zu schreiben, finde ich ziemlich aufwändig. Dann braucht man eine Methode, um über die CommandLine eine Datei nach Doppelklick zu öffnen. Aber was macht man, wenn die Datei schon offen ist? Wie könnte man's einfacher machen, zu überprüfen, ob eine Datei verändert ist und gespeichert werden muss, wenn ein Fenster geschlossen wird?
Am besten wär's, wenn man eine Lösung parat hätte, die die notwendigen Dialoge
generiert und sich um das Öffnen und Schließen von Dateien kümmert. Das war erst mal nur eine
Idee... Recht nahe an der Lösung war ich, als ich mir das Multi-SDI-Modell (ausgesprochen Multiple
Single Document Interface) einmal angesehen habe. Word und Excel verwenden so ein Dokument-Modell.
Eigentlich gibt's nur eine einzige Instanz der Anwendung, aber die liefert
abhängig von den Argumenten der CommandLine die gewünschten Dokumente. Also erst mal kurz das
Beispiel oben ansehen. Kurz möchte ich noch drauf hinweisen, dass der Install-Button oben rechts auf
der Demo-Form eine Datei-Verknüpfung in der Registry anlegt.
Das Projekt ist eine Einzelinstanzanwendung. Der Schlüssel zur Übergabe der CommandLine ist in der VB-Datei "ApplicationEvents" enthalten. Hier befindet sich ein Manager zur Verwaltung von Dateien und Forms. Diesem werden neue Forms übergeben, er kümmert sich um das Neu-Erstellen und Öffnen von Dateien abhängig von der CommandLine, versieht die Dateien wenn notwendig mit Schreibschutz. Die Forms sind im Manager referenziert und können über My.Application.Manager bequem die ihnen zugeordnete Datei oder andere nützliche Informationen zur Dateiverwaltung (unter anderem das Fenster-Menü) erhalten. Daneben sind über My.Application.Manager auch von jeder Form aus alle notwendigen Befehle für's Datei-Menü zu erreichen. (Öffnen, Speichern, Speichern unter, Schließen und Alles Beenden). Um die Aktionen dabei, oder auch um den Speichern-Dialog, wenn eine Form ohne Menü-Befehl geschlossen wird, kümmert sich der Manager selbständig.
Bin ganz zufrieden mit dem Ergebnis, mal sehen, ob in den nächsten Wochen hier noch ein paar andere Beispiele mit diesem Modell hinzu kommen. Gebt ruhig mal ein paar Kommentare dazu ab.
Grüße erst mal und Spaß beim Ausprobieren,
Thomas Bergner