You can display arbitrary HTML in the WebHTMLViewer control.
I tried this, maybe I am doing something wrong, I created a new WebApp, put an HTMLViewer on it and created two buttons.
HTMLViewer1.LoadPage("This is a <b>test 1</b>")
HTMLViewer1.LoadPage("This is a <b>test 2</b>")
I run the app and press button1 and then button 2. It works fine. I keep going back and forth and the text changes. But I noticed the browser forward/back buttons start working and you can actually go back and forward but it only affects the text in the HTMLViewer. If you play around with it you will see what I mean. Seems to be a bad situation. A user can click back on their browser and change the text to a prior version that you had loaded, but your app continues on as if nothing changed. I am sure it has to do with the loadpage method confusing the browser. I am using Chrome on Windows by the way.