2014-11-25 5 views
0
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    webBrowser1.Document.Body.MouseDown += Body_MouseDown; 
} 

void Body_MouseDown(object sender, HtmlElementEventArgs e) 
{ 
    switch (e.MouseButtonsPressed) 
    { 
     case MouseButtons.Left: 
      HtmlElement element = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition); 
      if (element != null && "img".Equals(element.GetAttribute("type"), StringComparison.OrdinalIgnoreCase)) 
      { 
       MessageBox.Show("Image Was Clicked"); 
      } 
      break; 
    } 
} 

이것은 사용하고 있지만 작동하지 않는 코드입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이것이 올바른 방법입니까?이미지 클릭 C# WinForms 브라우저 컨트롤

& 모두 도움을드립니다.

+0

잘 작동하지 않는 것 같습니다. 디버거를 사용하여 코드를 밟았습니까? 예상되는 결과가 무엇인지 말해 줄 수 있니? – MethodMan

+0

@DJKRAZE 내가 원하는 것은 웹 브라우저 컨트롤에서 이미지를 클릭하면 Image Was Clicked 메시지가 표시됩니다. 그러나 이미지를 클릭해도 아무 일도 일어나지 않습니다. –

+0

코드가'if' 문을 입력합니까? 코드를 단계별로 실행해야합니다. – swiftcode

답변

0

html의 일부 이미지에 type 속성이 없습니다. 따라서 클릭 할 수있는 이미지와 같은 것을 정의해야합니다. 클릭하면

void Body_MouseDown(object sender, HtmlElementEventArgs e) 
      { 
       switch (e.MouseButtonsPressed) 
     { 

      case MouseButtons.Left: 
       HtmlElement element = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition); 
       if (element != null) 
       { 
        string s = element.Style; 

        if ((s != null) && (s.IndexOf(".png") != -1)) MessageBox.Show("Image Was Clicked"); 
       } 
       break; 
     }  
      } 

다음 웹 브라우저의

초기화가 (당신이 당신의 WinForm의 생성자에 넣어 수 있습니다) :

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
      webBrowser1.Navigate("http://www.google.com"); 

귀하의 절차 Body_MouseDown 예를 들어, 당신의 코드를 편집 됨 Google 로고에 원하는 메시지 상자가 나타납니다. 중요한 점은 Style 속성이 HtmlElement이고 하위 문자열 ".png"가 검색되는 것입니다. jpg, gif, bmp 또는 모두 함께 원하는 모든 형식을 검색 할 수 있습니다. 행운을 비네.