문제

COM / MANIGAD MSHTML 컨트롤이 포함 된 WebBrowser 컨트롤과 유사한 C# 래퍼 컨트롤을 사용하고 있습니다. 응용 프로그램 사용자가 wysiwyg 방식으로 AA HTML 문서를 편집 할 수있는 편집 모드 에서이 컨트롤을 사용하고 있습니다.

이 컨트롤은 자체 UNDO / REDO 스택을 관리합니다.

사용자가 문서의 내용을 변경 / 실행 취소 할 수 없지만 편집 할 수 있도록 어떻게 재설정 / 지우려면 어떻게해야합니까?

도움이 되었습니까?

해결책

MSHTML 컨트롤의 실행 취소를 지우려면 Undo Manager 서비스를 사용할 수 있습니다.
실행 취소 서비스를 활성화하고 비활성화 할 때 실행 취소 스택이 지워집니다. MSHTML의 문서 개체에서 실행 취소 관리자를 추출하려면 iserviceprovider를 사용해야합니다.

이에 대한 해결책은 다음과 같은 것입니다.

    //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();

보다 자세한 구현과 자세한 정보는 다음을 볼 수 있습니다.

http://postxing.net:8080/postxing/tags/v1.1/postxing.htmlcomponent/html/

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top