Winform 컨트롤 학습 노트【4일째】--WebBrowser

7005 단어 WebBrowser
상용 방법
Navigate(string urlString);//  urlString     

Navigate(System.Uri url);//  url     

Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders);//  urlString     ,   postData    (                        postData    )

GoBack();//  

GoForward();//  

Refresh();//  

Stop();//  

GoHome();//    


 
공통 속성
Document;//           

DocumentTitle;//             

StatusText;//          

Url;//            Uri

ReadyState;//       


 
공통 이벤트
DocumentCompleted//            


 
컨트롤 값 가져오기
//input  

webBrowser1.Document.All["  ID"].GetAttribute("value");

webBrowser1.Document.GetElementById("  ID").GetAttribute("value");

// input  

webBrowser1.Document.All["  ID"].InnerText;

webBrowser1.Document.GetElementById("  ID").InnerText;


 
입력 상자에 값을 부여하다
HtmlElement he = webBrowser1.Document.GetElementById("  ID");

//input  

he.InnerText = "  ";

he.SetAttribute("value", " ");

//     

he.SetAttribute("value", "question1");

//   

he.SetAttribute("Checked", "True");

//   

he.SetAttribute("checked", "checked");


웹 페이지의 요소는 속성, 속성의 값, html 표시, 텍스트를 포함한다.
HtmlElement 객체:
GetAttribute("value");//속성value의 값 가져오기
SetAttribute("value", "123");//속성value의 값을 123으로 설정합니다
InnerText;//요소 아래의 텍스트 가져오기
InnerHtml;//원소 아래의 html 태그 가져오기
 
작업 요소의 자식 또는 부모 요소
HtmlElement he = webBrowser1.Document.GetElementById(passengerId).Parent.FirstChild.Children[1];


Parent;//요소의 부모 요소 가져오기
FirstChild;//요소의 하위 요소 가져오기
Children;//원소의 하위 원소의 집합을 얻다
 
요소 스타일 가져오기
webBrowser1.Document.GetElementById("  ID").Style;


 
자동 제출, 자동 클릭
webBrowser1.Document.GetElementById("  ID").InvokeMember("Click");


 
스크립트 오류 차단
webBrowser1.ScriptErrorsSuppressed = true;


 
컨트롤 포커스
webBrowser1.Select();

webBrowser1.Focus();

webBrowser1.Document.GetElementById("  ID").Focus();


 
편집 모드 설정
webBrowser1.DocumentText=string.Empty;

webBrowser1.Document.ExecCommand("EditMode",false,null);

webBrowser1.Document.ExecCommand("LiveResize",false,null);

//           

webBrowser1.Document.Write(@"  ");

//                     

webBrowser1.DocumentText=@"  ";


 
주요 컨텐트 가져오기
webBrowser1.Document.Body.InnerText;

webBrowser1.Document.Body.InnerHtml;


 
페이지 스크립트 실행
Object[] objArray = new Object[1];

objArray[0] = (Object)"webbrowser";

webBrowser1.Document.InvokeScript("runabc", objArray);

webBrowser1.Document.InvokeScript("return false")


 
웹 페이지에서 Iframe 가져오기
HtmlDocument docFrame = webBrowser1.Document.Window.Frames["mainFrame"].Document;

HtmlDocument docFrame = webBrowser1.Document.All.Frames["mainFrame"].Document;


 
새 링크 열기 처리 방법
private void NavigateNewURL(WebBrowser web, ref string address)

{

         if (address.Equals("about:blank")) return;

         if (!address.StartsWith("http://")) address = "http://" + address;

         try

         {

                   web.Navigate(new Uri(address));

         }

         catch (System.UriFormatException)

         {

                   return;

         }

}


 
새로 연 링크 처리
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)

{

         Uri a = new Uri(webBrowser1.Document.ActiveElement.GetAttribute("href"));

         webBrowser1.Navigate(a);

         e.Cancel = true;//           

}


 
WebBrowser 스크립트 오류 솔루션
이런 방법은 철저하게 해결할 수 없으니 부분적으로 문제를 해결할 수 있다.
//       

this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error);

//       

void Window_Error(object sender, HtmlElementErrorEventArgs e)

{

         //        

         e.Handled = true;

}


위의 방법은 여러 개의 프레임을 끼워 넣는 등 상황에 대해 여전히 잘 해결할 수 없다.
부록:
등록 정보
설명
 Application
객체가 유효하면 WebBrowser 컨트롤을 관리하는 응용 프로그램에서 구현한 자동화 객체(Idispatch)를 반환합니다.숙주 대상에서 자동화 대상이 잘못되면, 이 프로그램은 WebBrowser 컨트롤의 자동화 대상을 되돌려줍니다
 Parent
WebBrowser 컨트롤의 부모 자동화 대상을 되돌려줍니다. 보통 용기입니다. 예를 들어 숙주나 IE 창입니다.
 Container
WebBrowser 컨트롤 컨테이너의 자동화 객체를 반환합니다.일반적으로 이 값은 Parent 속성이 반환하는 값과 동일합니다.
 Document
활성 문서의 자동화 객체를 반환합니다.HTML이 현재 WebBrowser에 표시되는 경우 Document 속성은 DHTMLObjectModel에 대한 접근 경로를 제공합니다
 TopLevelContainer
Boolean 값을 되돌려줍니다. IE가 WebBrowser 컨트롤의 맨 윗부분 용기인지 여부를true로 되돌려줍니다.
 Type
WebBrowser 컨트롤에 로드된 객체의 유형을 반환합니다.예: 로드된 경우.doc 파일은 MicrosoftWordDocument로 돌아갑니다.
 Left
WebBrowser 컨트롤 창의 내부 왼쪽과 컨테이너 창의 왼쪽 사이의 거리를 되돌리거나 설정합니다.
 Top
WebBrowser 컨트롤 창의 내부 왼쪽과 컨테이너 창의 상단 모서리 사이의 거리를 되돌리거나 설정합니다.
 Width
WebBrowser 창의 너비를 픽셀 단위로 되돌리거나 설정합니다.
 Height
WebBrowser 창의 높이를 픽셀 단위로 되돌리거나 설정합니다.
 LocationName
웹 페이지가 웹 페이지의 제목이라면 웹 브라우저가 현재 표시하는 자원의 이름을 포함하는 문자열을 되돌려줍니다.파일 또는 폴더의 경우 파일 또는 폴더의 이름입니다.
 LocationURL
WebBrowser에서 현재 표시 중인 리소스의 URL을 반환합니다.
 Busy
Boolean 값을 되돌려줍니다. WebBrowser가 현재 URL을 불러오는 중인지 여부입니다.true를 되돌려주면stop 방법으로 실행 중인 접근 동작을 취소할 수 있습니다.
 
이벤트:
PrivateEvents
Description
BeforeNavigate2
탐색 발생 전 발생, 새로 고침 시 발생되지 않음
CommandStateChange
명령의 활성화 상태가 바뀔 때 자극합니다.Back 및 Forward 메뉴 항목이나 버튼을 활성화하거나 닫을 시기를 나타냅니다.
DocumentComplete
전체 문서가 완성되면 자극적이며, 페이지를 새로 고침해도 자극적이지 않습니다
DownloadBegin
다운로드 작업이 시작된 후 자극이 발생하면 갱신도 이 이벤트를 자극할 수 있습니다
DownloadComplete
다운로드 작업이 완료된 후 발생시키면 새로 고침도 이 이벤트를 발생시킬 수 있습니다
NavigateComplete2
탐색 완료 후 발생, 새로 고침 시 발생되지 않음
NewWindow2
새 창을 만들기 전에 자극하기
OnFullScreen
FullScreen 속성이 변경되면 발생합니다.이 이벤트는 VARIENTIE가 전체 화면 표시(VARIENT TRUE) 또는 일반 표시(VARIENT FALSE)인지 여부를 나타내는 BOOL의 입력 매개변수
OnMenuBar
MenuBar의 속성을 변경할 때 발생, 매개변수가 VARIENT 임을 나타냅니다.BOOL 타입의VARIANT_TRUE는 표시됨, VARIANTFALSE는 숨기기
OnQuit
사용자가 브라우저를 닫든 개발자가 Quit 방법을 호출하든 IE가 종료될 때 자극합니다
OnStatusBar
OnMenuBar 호출 방법과 마찬가지로 상태 표시줄이 표시되는지 여부를 나타냅니다.
OnToolBar
호출 방법과 같이 도구막대가 보일지 여부를 표시합니다.
OnVisible
창의 표시 또는 숨기기를 제어하고 VARIENT 을 사용합니다.BOOL 유형의 매개변수
StatusTextChange
상태 표시줄의 텍스트를 바꾸려면, 이 이벤트는 자극을 받지만, 프로그램에 상태 표시줄이 있는지 없는지는 상관하지 않습니다
TitleChange
Title이 유효하거나 변경될 때 자극
 
참조: C# WinForm 개발 시리즈 - WebBrowser - peterzb - 블로그 가든

좋은 웹페이지 즐겨찾기