Я пытаюсь получить полосы прокрутки, работающие с элементом управления веб-браузером. Однако, поскольку я буду использовать его для отображения сообщения для настраиваемого почтового ящика, я не хочу, чтобы полоса прокрутки появлялась, даже если она не нужна - по-видимому, по умолчанию. Чтобы обойти это, я решил отключить полосы прокрутки на элементе управления и вместо этого использовать полосы прокрутки на другом элементе управления, таком как панель. Таким образом, они появятся только в том случае, если содержимое страницы браузера слишком велико, чтобы соответствовать.WCustom scrollbars не отображается в элементе управления WebBrowser
Это не сработало слишком хорошо, хотя я прочитал довольно много сообщений, даже на StackOverflow, где это кажется правильным решением. Одним из примеров, когда я попытался использовать решение здесь:
Scrolling problem with a WebBrowser control contained in a Panel control
Кажется, что если Scrollbars отключены для веб-браузера, это не позволит использование панели прокрутки либо. Это, по-видимому, имело место при тестировании в режиме разработки. Чтобы преодолеть это, я попробовал добавить коробку с картинками за веб-браузером внутри панели; он работал, когда в режиме дизайна (изменение размера окна изображения и веб-браузера приведет к тому, что панель включит его полосы прокрутки), но не работала во время выполнения (я добавил код, чтобы изменить размер окна изображения на размер элемента управления веб-браузера - который сам по себе изменяется в зависимости от размера прокручиваемого содержимого).
Я также пробовал программно включать и отключать полосы прокрутки веб-браузера на основе, если размер прокручиваемого прямоугольника был больше размера элемента управления. Теоретически это было бы хорошо, если бы не было очищено весь текст внутри элемента управления при изменении свойства 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). Однако в этой конкретной ситуации я могу отказаться от включения прокрутки по умолчанию, если нет лучшего решения.
EDIT: Чтобы быть ясным, я не говорю о каких-либо полосах прокрутки в содержимом HTML - это не имеет никакого отношения, поскольку HTML просто используется для гибкого форматирования текста. Я говорю только о панели прокрутки самого браузера.
Любая помощь очень ценится. Благодаря!
Полезная работа вокруг, работала для меня. +1 для вас и Шэн. – fre0n