Режим редактирования веб-браузера C #: нажатие «enter» приводит к новому абзацу

#c# #mshtml

#c# #mshtml

Вопрос:

У меня есть небольшое приложение WPF, которое использует webbrowser-control в сочетании с mshtml в качестве HTML-редактора. Пока это работает действительно хорошо, но: когда я нажимаю клавишу «Enter», веб-браузер добавляет новый абзац

в документе mshtml. Вместо этого мне нужен простой перенос строки, потому что межстрочный интервал в абзацах слишком большой. У кого-нибудь есть идея, как я могу получить этот эффект?

 <WebBrowser Name="wbbHTMLeMail" PreviewKeyDown="WbbHTMLeMail_PreviewKeyDown"/>

wbbHTMLeMail.NavigateToString(CurrentEmail.Body);
doc = wbbHTMLeMail.Document as HTMLDocument;
doc.designMode = "ON";
wbbHTMLeMail.PreviewKeyDown  = WbbHTMLeMail_PreviewKeyDown;
  

Я пытался перехватить событие PreviewKeyDown, но я не знаю, как вставить разрыв строки в документ mshtml.
Одна попытка заключалась в том, чтобы сделать что-то вроде этого:

  private void WbbHTMLeMail_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                var sText = doc.selection.createRange();
                sText.execCommand("Paste", false, "</br>");
                e.Handled = true;
            }
}
  

Но это не сработало, он только вставляет «/ br>» в виде обычного текста.
У кого-нибудь есть идея, как получить только простой разрыв строки при нажатии клавиши Enter?

Ответ №1:

Я собираюсь рекомендовать это:

 private void WbbHTMLeMail_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                var sText = doc.selection.createRange();
                sText.execCommand("Paste", false, Environment.NewLine);
                e.Handled = true;
            }
}
  

Комментарии:

1. Извините, это не сработало. Браузер / документ вообще не отвечает на эту команду