Dokumenten-Sperren-Halter-Verwaltung
Die ausgeführte Drehtransformator Tabelle aktiver Dokumente () verwaltet eine Anzahl geöffnete Dokumente und jede Bearbeitung gesperrt haben. Sie können eine sperre Bearbeiten auf einem Dokument in Drehtransformator platzieren, wenn dies programmgesteuert im Hintergrund ohne den Benutzer bearbeitet wird, der einem geöffneten Dokument in einem Dokumentfenster anzuzeigen. Diese Funktionalität wird häufig verwendet, um die vom Designer mehrere Dateien über eine grafische Benutzeroberfläche ändern.
Dokumenten-Sperren-Halter-Szenarien
Datei „a“ hat eine Abhängigkeit für die Datei „b“
Betrachten Sie eine Situation, in der Sie einen standardmäßigen Editor „A“ für Dateityp „a“ implementieren, und jede Datei vom Typ „a“ weist einen Verweis auf (oder Abhängigkeit) einer Datei vom Typ „b“. Ein Standardwert des Editors „B“ ist für Dateien vom Typ „b“. Wenn Editor „A“ Datei „a“ öffnet, kann sie den Verweis auf die entsprechende Datei „b“ ab. Datei „b“ wird nicht angezeigt, aber Editor „A“ kann sie ändern. Editor „A“ wird ein Verweis auf den Dokumenten von Daten aus Datei „b“ aus der FindAndLockDocument-Methode und wartet auf sperre Bearbeiten außerdem die Datei „b“. Nach dem Editor „A“ wird die Datei „b“ ändern, können Sie die sperrenanzahl Bearbeiten auf die Datei „b“ verringern, indem Sie die UnlockDocument-Methode aufrufen. Sie können diesen Schritt auslassen, wenn Sie die FindAndLockDocument-Methode mit dem Parameter dwRDTLockType festgelegt RDT_NoLockaufgerufen hätten.
Datei „b“ wird von einem anderen Editor geöffnet
Im Fall, dass die Datei „b“ Editor „B“ bereits durch geöffnet wird, wenn Editor „A“ wird versucht, diesen zu öffnen, gibt es zwei verschiedene Szenarios behandelt:
Wenn die Datei „b“ in einen kompatiblen Editor geöffnet ist, müssen Sie zum Registrieren des Editors „A“ eine Dokumenten bearbeitungs sperre auf die Datei „b“ mit der RegisterDocumentLockHolder-Methode verfügen. Nachdem der Editor „A“ wird die Datei „b“ UN Ändern sperre bearbeitungs die Register mithilfe der UnregisterDocumentLockHolder-Methode.
Wenn die Datei „b“ auf eine nicht kompatible Weise geöffnet ist, können Sie können die versuchte Öffnen der Datei „b“ durch „A“ Fail des Editors, oder Sie können die Ansicht, die mit teilweiser Editor „A“ eine entsprechende Fehlermeldung zu öffnen und anzeigen. Die Fehlermeldung sollte den Benutzer anweisen, Datei „b“ in nicht kompatiblen Editor zu schließen und die Datei mit „a“ Editor „A“ anschließend erneut zu öffnen. Sie können das Visual Studio SDK-Methoden QueryCloseRunningDocument ebenfalls implementieren, um den Benutzer aufzufordern, Datei „b“ zu schließen, die in nicht kompatiblen Editor geöffnet ist. Wenn der Benutzer die Datei „b“ umfasst, wird die Start- Datei „a“ in Editor „A“ normalerweise fort.
Weitere Dokumenten-Bearbeitungs-Sperren-Überlegungen
Rufen Sie ein anderes Verhalten ab, wenn Editor „A“ ist der einzige Editor Dokumente, der eine bearbeitungs sperre auf die Datei „b“ hat, als Sie wurden, wenn Editor „B“ auch eine bearbeitungs Dokumente sperre auf die Datei „b“ enthält. In Visual StudioKlassen-Designer ist ein Beispiel eines visuellen Designers, der keine sperre Bearbeiten auf der zugeordneten Codedatei enthält. Das heißt, wenn der Benutzer ein Klassendiagramm enthält, das in der Entwurfsansicht geöffnet sind und die zugeordnete Codedatei, die gleichzeitig geöffnet ist und der Benutzer die Codedatei ändert, jedoch nicht die Änderungen gespeichert werden sollen, sind auch die Änderungen an der Klassendiagrammdatei (CD-Datei) verloren. Wenn Klassen-Designer die einzige Dokumenten bearbeitungs sperre in der Codedatei wurde, wird der Benutzer nicht aufgefordert, die Änderungen zu speichern, wenn Sie die Codedatei schließt. Die IDE fordert den Benutzer Änderungen zu speichern, die erst nach der Benutzer Klassen-Designergeschlossen wird. Die gespeicherten Änderungen werden in beiden Dateien wiedergibt. Wenn Klassen-Designer und der Codedatei des Editors reservierten Bearbeiten von Dokumenten, Sperren auf die Codedatei, wird der Benutzer aufgefordert zu speichern, wenn entweder die Codedatei oder das Formular geschlossen wird. An diesem Punkt werden die gespeicherten Änderungen in der Form und in der Codedatei wiedergegeben. Weitere Informationen zu Klassendiagrammen finden Sie unter Arbeiten mit Klassendiagrammen (Klassen-Designer).
Beachten Sie, dass, wenn Sie eine sperre Bearbeiten auf einem Dokument für einen nicht Editor einfügen müssen Sie die IVsDocumentLockHolder-Schnittstelle implementieren müssen.
Viele Mal wird ein Benutzeroberfläche-Designer, Codedateien programmgesteuert geändert wird, Änderungen an mehr als einer Datei vor. In einem solchen Fall behandelt die SaveItemsViaDlg-Methode die Speichern eines oder mehrerer Dokumente mithilfe des Dialogfelds Möchten Sie die Änderungen für die folgenden Elemente speichern? .