Deine Idee ist ja schon nicht schlecht, aber ich beschäftige mich gerade auch mit dem Problem.
Und mir ist aufgefallen, dass du einen kleinen Fehler in deiner Lösung hast.
Mit HtmlViewer1.Height bekommst du nur die Höhe des HtmlViewer und nicht des Dokumenteninhalts.
Das heisst wenn dein HtmlViewer 200 hoch ist, scrollt der immer nur bis Position 200 und sobald dein Text im Fenster mehr als 200 hoch ist bleibt der einfach stehen mit dem scrollen.
Ich habe das problem jetzt mit
HTML Anker gelöst, kann man einfach bei Google finden.
Dort ist mir aber auch aufgefallen, wenn man durch das Fenster scrollt um alte Nachrichten zu lesen, scrollt der beim ankommen einer Nachricht direkt wieder nach unten.
Das müsste man noch irgendwie lösen indem man abfragt ob das Fenster ganz nach unten gescrollt ist.