Режим редактирования веб-браузера C #: нажатие «enter» приводит к новому абзацу - PullRequest
0 голосов
/ 04 апреля 2019

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

в документ 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 Ответ

0 голосов
/ 04 апреля 2019

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

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;
            }
}
...