본문 바로가기
개발 이야기/C# 이야기

C# WebBrowser NavigateToString 한글

by 런던살자 2020. 11. 11.

안녕하세요 마블랑입니다.

 

C#에서 WPF나 윈폼으로 GUI 프로세스를 구현할때 사용하는 컨트롤 중에 인터넷 페이지같은 웹브라우저를 구현할수 있는 WebBrowser 컨트롤이 있습니다

 

보통 다음이나 네이버같은 주소를 입력해주거나 HTML 파일을 따로 만들어서 WebBrowser 컨트롤에 불러와서 사용할수 있는데요

 

이러한 방법들도 있지만 동적으로 사용자가 입력한 HTML페이지를 직접 띄워줄수도 있습니다.

 

WebBrowser 클래스의 NavigateToString함수를 이용하면 가능합니다.

 

 

예제를 통해 NavigateToString 함수를 사용해보도록 하겠습니다.

 

웹브라우저 컨트롤을 쓰려면 당연히 먼저 웹브라우저 컨트롤을 선언해줘야합니다.

위와 같은 방법도 있지만 동적으로 웹브라우저 컨트롤을 추가하는 방법도 있습니다.

 

하지만 간단한 방법을 선호하기 때문에 XAML Grid 파일에 바로 추가했습니다.

 

 

그 다음은 아래와 같이 코드를 입력해서 XAML에 추가된 웹브라우저에 태그를 연동해줍니다.

 

C# 코드긴 하지만 문자열에 들어가 있는것은 HTML 코드입니다.

 

버튼에 추가를 하든 Loaded 이벤트에 추가를 하든 원하는 곳에 코딩해주시기 바랍니다.

            string htmlTag = "<html lang=\"ko\">" +
                    "<HEAD>" +
                       "<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>" +
                    "</HEAD>" +
                    "<body>" +
                        "<div>" +
                            "<input type = \"button\"id = \"Button1\" value = \"한글테스트\"/>" +
                            "<input type = \"button\"id = \"Button2\" value = \"태그한글표시\"/>" +
                        "</div>" +
                    "</body>" +
                "</html>";

           browser.NavigateToString(htmlTag);

 

그럼 바로 실행해보도록 하겠습니다.

 

지금은 버튼 두개만 있는 HTML 화면이지만 직접 입력한 문자열로도 HTML 화면을 웹브라우저에 띄울수 있군요.

 

간혹 웹브라우저 컨트롤을 사용하는 분들이 있는데 한글이 안나오는 분들이 있을겁니다.

 

HTML 파일의 태그 <HEAD></HEAD> 부분에

 

<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>

 

를 추가해주지 않으면 아래와 같이 한글이 깨져서 나옵니다.

 

한글이 깨지는 분들은 꼭 위에 있는 한글인코딩 UTF-8을 추가하기 바랍니다.

 

 

이상 마블랑이었습니다.

 

읽어주어서 고맙습니다~

댓글