Я пытаюсь заставить полосы прокрутки работать с контролем веб-браузера. Однако, поскольку я буду использовать его для отображения сообщения для настраиваемого ящика сообщений, я не хочу, чтобы полоса прокрутки появлялась, даже если она не нужна - как это кажется по умолчанию. Чтобы обойти это, я решил отключить полосы прокрутки на элементе управления и вместо этого использовать полосы прокрутки на другом элементе управления, таком как Panel. Таким образом, они будут отображаться только тогда, когда содержимое страницы браузера слишком велико для размещения.
Это не сработало слишком хорошо, хотя я прочитал довольно много постов, даже в StackOverflow, где это кажется правильным решением. Один пример, когда я попытался использовать решение здесь:
Проблема прокрутки с элементом управления WebBrowser, содержащимся в элементе управления Panel
Кажется, что если для веб-браузера отключены полосы прокрутки, то панель также не позволит использовать полосы прокрутки. Это похоже на случай тестирования в режиме проектирования. Чтобы преодолеть это, я попытался добавить графический блок за веб-браузером внутри панели; он работал в режиме разработки (изменение размера графического блока и веб-браузера приводило к тому, что панель включала полосы прокрутки), но не работало во время выполнения (я добавил код, чтобы графическое окно изменило размер элемента управления веб-браузера - размер которого всегда изменяется в соответствии с размером прокручиваемого содержимого).
Я также попытался программно включить и отключить полосы прокрутки веб-браузера, основываясь на том, был ли размер ScrollableRectangle больше размера элемента управления. Это теоретически было бы хорошо, за исключением того, что, кажется, очищает весь текст в элементе управления каждый раз, когда свойство ScrollbarsEnabled изменяется - и, таким образом, возвращается к отсутствию полос прокрутки.
Я делаю это с помощью следующего кода, который эффективно вызывается при каждом нажатии клавиши в элементе управления:
if (Output.Document.Body != null)
{
if (Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height
|| Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
Output.ScrollBarsEnabled = true;
else
Output.ScrollBarsEnabled = false;
}
else
Output.ScrollBarsEnabled = false;
Также важно отметить, что мне также нужно решение для редактора HTML, которое будет использоваться в приложении, поэтому в идеале любое решение не должно зависеть от события загрузки страницы и т. Д., Так как оно, похоже, не срабатывает, когда в веб-браузере включен режим разработки (который необходим для работы в качестве редактора HTML). Однако в этой конкретной ситуации я могу прибегнуть к включению полос прокрутки по умолчанию, если нет лучшего решения.
РЕДАКТИРОВАТЬ: Для ясности, я не говорю о каких-либо полос прокрутки в контенте HTML - это не имеет значения, поскольку HTML просто используется для обеспечения гибкого форматирования текста. Я говорю только о полосе прокрутки самого элемента управления браузера.
Любая помощь высоко ценится. Спасибо!