C# 에서 제공하는 WebBrowser 컨트롤과 컨트롤안에 로드된 javascript 간의 통신방법이다.


1. javascript 에서 C# 호출방법

    아래와 같은 선언이 필요하며, 호출될 메소드는 당연히 public 이어야 한다. 


    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

    [ComVisible(true)]

    public partial class AppContainer : Form{

         // .. 중략


        /**

         * 호출될 public 메소드

         * 호출받은 값을 메세지 박스로 보여줌

         */

        public void RecieveJs(Object msg)

        {

            MessageBox.Show(@"받은 값" + msg);

        }

        /**

         *  아래와 같이 호출시 리턴도 가능하다.

         *  디렉토리목록을 보여주고 선택한 디렉토리의 파일목록을 리턴함

         */

        public string ShowDirectory()

        {

            var files = String.Empty;

            var folderBrowser = new FolderBrowserDialog();

            if (folderBrowser.ShowDialog() == DialogResult.OK)

            {

                files = String.Join(",", Directory.GetFiles(folderBrowser.SelectedPath));

            }

            return files;

        }

    }


2. C# 에서 javascript 호출

C# form의 textbox 두개의 값을 버튼 클릭시 javascript 로 보내는 예제이다.

invoikeScript 를 통해 호출할 function 명 및 parameter 를 전송한다.

    // wb 는 WebBrowser 컨트롤 변수명

     private void SendBtn_Click(object sender, EventArgs e)

    {

         if (wb.Document != null)

         {

               Object[] objArray = {textBox1.Text, textBox2.Text};

              // javascript 의 recieveMessage function 을 호출함

               wb.Document.InvokeScript("recieveMessage", objArray);  

          }

     }


이상

'IT > C#' 카테고리의 다른 글

Control Docking  (0) 2014.12.02
폼(Form) 이동 막기  (0) 2014.12.02

+ Recent posts