MultiSDI

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.

Mehrere Windows Forms für einen Datei-Typ verwalten

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