2011-01-22 2 views
3

기본적으로 WebBrowser 컨트롤에 HTML 문서를로드하고 사용자가 하나 이상의 HTML DOM 요소를 시각적으로 선택해야합니다 (XPath를 가져 오는 데는 다른 이야기가 필요함).WinForms WebBrowser - FireBug 요소와 같은 강조 표시 검사

요소를 가리키면 색상 A로 강조 표시되고 마우스를 밖으로 움직이면 시각적 상태로 복원됩니다.

요소를 클릭하면 색상 B로 강조 표시되고 이전에 클릭 한 요소를 다시 클릭하면 시각적 상태로 복원됩니다.

요약하면 FireBug Inspect Element 기능이나 Dapp Factory 콘텐츠 선택 기능과 유사하게 동작해야합니다.


본래의 접근법은 아래의 예처럼 HtmlElement.Style 속성을 사용하는 것입니다,하지만 분명히 내가 요소가 이미 제거하지 않아야하는 경우 같은 방식으로 설정 테두리 스타일을 가질 수 없기 때문에 하는 MouseLeave에 :

void Document_MouseOver(object sender, HtmlElementEventArgs e) 
{ 
    // what if e.FromElement.Style already contains "border: solid 1px Red;" ? 
    e.FromElement.Style = "border: solid 1px Red; " + e.FromElement.Style; 
    [...] 
} 

은 아마도 나는 (하나가 같은 경우 자바 스크립트를 사용하여 할 것 같은) 사용자 정의 CSS 클래스를 설정 해제/설정하여이를 달성 할 수 있지만, 이러한 속성을 노출 HtmlElement하지 않는 것, 어떻게 것 어쨌든 CSS 클래스 정의를 삽입합니까?

업데이트 : 실제로 CSS 클래스를 HtmlElement.SetAttribute("className")으로 설정할 수 있습니다. CSS 클래스를 삽입하려면 예를 들어 C#: Best way to inject CSS into MSHTML instance?을 확인하십시오.

이 작업을 수행하는 방법에 대한 아이디어는 언제나 환영합니다. 고맙습니다.

답변

4
+1

큰 힌트. hover 엘리먼트에 밑줄을 긋게 해주는 선사 시대의 코드 샘플을 발견했습니다 (그러나 IHTMLRenderStyle은 테두리 관련 속성을 노출하지 않습니다 ...). http://groups.google.com/group/microsoft.public.inetsdk.programming .mshtml_hosting/msg/7fe8bfea7dcd107b –

1

페인트하려고하면 WebBrowser에서 작동하지 않습니다. FormElement.Style은 이미 사용하고있는 방법입니다.