Frage

Ich bin mit einer C # Wrapper Steuerung ähnlich das WebBrowser-Steuerelement, das die COM / unmanaged MSHTML-Steuerelement enthält. Ich verwende diese Steuerung in dem Bearbeitungsmodus, die der Benutzer der Anwendung ermöglicht ein ein HTML-Dokument in einer WYSIWYG Art und Weise zu bearbeiten.

Diese Steuerung verwaltet seine eigene Undo / Redo-Stack.

Wie kann ich reset / klar, so dass Benutzer nicht in der Lage sein zu wiederholen / Änderungen rückgängig macht den Inhalt des Dokuments, sondern nur in der Lage sein, es zu bearbeiten?

War es hilfreich?

Lösung

Um den Rückgängig-Stapel von MSHTML Steuerung deaktivieren Sie Undo-Manager-Dienst verwenden können.
Beim Aktivieren und Deaktivieren des Undo-Dienstes wird die Undo-Liste gelöscht. Um die Undo-Manager extrahieren aus dem Document-Objekt von MSHTML müssen Sie die IServiceProvider verwenden.

Die Lösung hierfür ist soetwas wie:

    //Extract undo manager
    if (m_undoManager == null) 
    {
      IServiceProvider serviceProvider = Document as IServiceProvider;

      Guid undoManagerGuid = typeof(IOleUndoManager).GUID;
      Guid undoManagerGuid2 = typeof(IOleUndoManager).GUID;
      IntPtr undoManagerPtr = ComSupport.NullIntPtr;

      int hr = serviceProvider.QueryService(ref undoManagerGuid2, ref undoManagerGuid, out undoManagerPtr);
      if ((hr == HRESULT.S_OK) && (undoManagerPtr != ComSupport.NullIntPtr))
      {
        m_undoManager = (IOleUndoManager)Marshal.GetObjectForIUnknown(undoManagerPtr);
        Marshal.Release(undoManagerPtr);
      }
    }

    //And to clear the stack 
    m_undoManager.Enable(true);
    Application.DoEvents();

Weitere detaillierte Implementierung und weitere Informationen können eingesehen werden unter:

http://postxing.net:8080/ PostXING / tags / v1.1 / PostXING.HtmlComponent / html /

http://msdn.microsoft.com/ en-us / library / ms678623 (VS.85) aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top