Управление WPF WebBrowser не вводит режим проектирования, когда свойство документа изменяется

У меня есть расстраивающая проблема. Вот упрощенная версия того, что я делаю:

UserControl в c# содержит панель инструментов и встроенный объект WebBrowser. Панель инструментов содержит кнопку "Edit", который, когда нажатые наборы webbrowser управляют в режиме проектирования. Другая кнопка, "Отмена", выключает режим проектирования.

Псевдокод (очень упрощенный):

public void SetDesignMode(bool dm) {
  IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
  if (dm) doc.designMode = "On";
  else doc.designMode = "Off";
  _designMode = dm;
  ReloadDocument(); // setting designmode clears the document element, so it must be reloaded
}

public void OnLoadCompleted() {
  IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
  if (!_documentLoaded) {
    if (_designMode) doc.designMode = "On";
    else doc.designMode = "Off";
    ReloadDocument();
    _documentLoaded = true;
  }
}

public void ReloadDocument() {
  _documentLoaded = false;
  // code that navigates to the document
}

Проблема: Если я нажму на отображенную веб-страницу, и затем на кнопке "Edit", то управление WebBrowser не станет доступным для редактирования. Указатель мыши при уборке пылесосом по изображениям/ссылкам показывает указатели мыши навигации веб-браузера, не редактирования. Если я нажму в тексте, то каре не отобразится.

Отладка показывает, что designMode свойство на документе на самом деле установлено на "На" в этой ситуации, но управление ведет себя, как будто это установлено на "Прочь".

Если я не нажимаю в веб-странице прежде, чем нажать кнопку "Edit", все работает как ожидалось.

Разработка: Если я нажимаю кнопку "Cancel", когда управление находится в режиме проектирования, я получаю соответствующее (mis) поведение, если документ был нажат в.

Просто нажимая на "Edit", затем "Отмена", затем "Редактирование" и т.д., никогда не нажимая в документе хорошо работает (тест наведения мыши показывает надлежащие указатели мыши, и я получаю навигацию ссылки или редактирующий в зависимости от режима проектирования, если я нажимаю на ссылку в отображенном документе).

Я попробовал различные методы, чтобы удостовериться, что другое управление получает фокус, прежде чем я изменю designMode свойство, но это не имеет никакого значения. Я искал MSDN и половину известного Интернета и не нашел упоминания об этом виде проблемы. Зеркальное отражение designMode свойства как это, кажется, вполне unusal.

Еще один лакомый кусочек информации: я настраиваю события документа путем уведомления документу с приемником, реализованным usercontrol. Я сомневаюсь, что это должно иметь любое влияние на проблему, но я включал его здесь ради того, чтобы быть завершенным. Обновление: Отключение этого ничего не изменяет относительно проблемы.

Кто-либо распознает эту проблему?

Обновление: я работал вокруг проблемы путем воссоздания управления веб-браузером в SetDesignMode (). Это - ужасное решение, но это работает и действительно на самом деле смотрит хорошо. Я очень интересуюсь любой обратной связью на этой проблеме, все же. Я полагаю, что это - ошибка в MSHTML.

5
задан PeeHaa 8 January 2015 в 19:01
поделиться