#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. Извините, это не сработало. Браузер / документ вообще не отвечает на эту команду