MSHTML: كيف يمكنك مسح المخزن المؤقت التراجع / إعادة من MSHTML

StackOverflow https://stackoverflow.com/questions/266497

سؤال

وأنا باستخدام عنصر تحكم المجمع C # مماثلة لعنصر التحكم WebBrowser الذي يحتوي على / تحكم MSHTML غير المدارة COM. أنا باستخدام هذا التحكم في وضع التحرير التي تسمح للمستخدم لتطبيق لتعديل وثيقة HTML بطريقة WYSIWYG.

وهذا التحكم بإدارة هو نفسه كومة التراجع / إعادة.

وكيف يمكنني إعادة تعيين / اضحة بحيث لذلك المستخدم لن تكون قادرة على إعادة / التراجع عن التغييرات على محتوى الوثيقة، ولكن أن تكون قادرة على تحريره فقط؟

هل كانت مفيدة؟

المحلول

لمسح مكدس التراجع عن نطاق السيطرة MSHTML يمكنك استخدام خدمة إدارة التراجع.
عند تمكين وتعطيل الخدمة التراجع، يتم مسح مكدس التراجع. لاستخراج مدير التراجع من الكائن ثيقة 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 / علامات / V1.1 / PostXING.HtmlComponent / HTML /

http://msdn.microsoft.com/ أون لنا / مكتبة / ms678623 (VS.85) .aspx اتصال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top