프로그램/C#

C#에서, webbrowser 의 documentText 갱신 방법.

(주)CKBcorp., 2016. 3. 5. 07:00
반응형


별거 아닌데, 개념이 없으면 ( 나처럼 ) 헷갈릴 수 있어서 기록한다.


1. 너님이 귀차니즘 여러가지 까닭으로 웹뷰를 사용한다고 치자.

2. 그렇다면, 뒷단인 C#에서 동적으로 html 을 조립한 다음 화면에 반영해 줘야 하겠지?

3. 근데, webBrowser의 html text 를 나타내는 documentText 객체만 반영하면 반영안된다.



즉, 문자열에 해당하는 html 을 동적으로 조립하고, 

조립한 html 문자열을 webBrowser.documentText 에 할당한다고 해서 화면이 변경되는 게 아니란 거다. 

그렇다고 webBrowser.Refresh() 해 버리면 화면이 리프레쉬 되어 버리니까 안되겠지?


이럴때에 해결법이다. 자세한건 역시나 http://stackoverflow.com/questions/174403/net-webbrowser-documenttext-isnt-changing 에서 참고.




11. 해결방법은 두가지인데, 그 첫번째는

webBrowser.Navigate("about:blank");

webBrowser.Document.OpenNew(false);

webBrowser.Document.Write(html);



12. 두번째는


webBrowser.Navigate("about:blank");

HtmlDocument doc = browser.Document;

doc.Write(String.Empty);

browser.DocumentText = _emailHTML;



둘 다 비슷하니 본인 취향에 맞추어 쓰면 된다. 

핵심을 설명하자면


1. webBrowser 객체를 사용할 때, 먼저 webBrowser.Navigate("about:blank"); 로 랜더링을 한 번 해 줄것.


이거 안 해 주면 아무리 documentText 에 값 넣어도 안된다.


2. browser.DocumentText 에 바로 쓰지 말고 webBrowser.Document.Write() 로 쓸 것.


Document.Write() 로 써야 DOM 객체가 생성 + 화면 랜더링이 작동되나 보다.


3. 만약 안되면 webBrowser.Refresh(); 써봐라.

난 안 써도 되던데, 예제에는 있더라고.

혹시 안되는 사람들은 같이 써 봐라.


반응형