Click here to Skip to main content
6,595,854 members and growing! (18,041 online)
Email Password   helpLost your password?
Desktop Development » Miscellaneous » HTML Browser Controls     Beginner License: A Public Domain dedication

How To Tell What is Clicked in a WebBrowser Control

By chemicalNova

This article explains how to grab the HTML Element that was clicked in a WebBrowser control
C#, Windows, WinForms
Version:3 (See All)
Posted:6 Jan 2009
Views:7,486
Bookmarked:32 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
6 votes for this article.
Popularity: 3.50 Rating: 4.50 out of 5

1

2

3
3 votes, 50.0%
4
3 votes, 50.0%
5

Introduction

This is my first submission. It is small and will be useful for beginners.

This article will demonstrate how you can tell what is selected under the cursor inside a WebBrowser control, using your own custom ContextMenu. Have you ever wanted to replace the default Internet Explorer ContextMenu? This should help you fully achieve that goal.

Background

I am currently writing a WebBrowser application for kids. Everything worked great, and I assumed I was near completion... except for that pesky - clearly Internet Explorer - ContextMenu.

Getting a custom ContextMenu to work is not the focus of this article, as it is accomplished in a few easy steps. The focus of this article is being able to provide functionality close to what Internet Explorer presents, by providing the user with a different menu for different elements on the page. 

For example, "Save Picture" when an image is clicked, or "Copy Shortcut" when a link is clicked. 

Using the Code 

I have included a sample project of what I will outline here.

First off, we need to translate the mouse coordinates on the screen, into a Point object:

Point ScreenCoord = new Point(MousePosition.X, MousePosition.Y); 

Now, we must create the coordinates of the browser, based off the coordinates of the screen:

Point BrowserCoord = webBrowser1.PointToClient(ScreenCoord);

Now we can use the WebBrowser documents GetElementFromPoint method to retrieve the element that has been clicked:

HtmlElement elem = webBrowser1.Document.GetElementFromPoint(BrowserCoord);

Now, we can use this element to see what has been clicked:

switch (elem.TagName)
{
    case "A":
        //! We have clicked a link
        break;
    case "IMG":
        //! We have clicked an image
        break;
    default:
        //! This is anywhere else
        break;
}

Points of Interest

I pulled my hair out for a fairly long time searching for a way to do this. I couldn't find anything, even here on The Code Project. So I figured this would be helpful for some people. Note that once you have the element, you can do anything with it, for example, using GetAttribute to retrieve the SRC of an image to download it, etc.

History

  • 1/7/09 - First submission - all that's needed, to be honest!
  • 1/8/09 - Attempted to clarify the goal of the article

License

This article, along with any associated source code and files, is licensed under A Public Domain dedication

About the Author

chemicalNova


Member
I am a young developer from Australia. I have been programming since I was 11, when I started with Visual Basic. I have since moved onto a degree in C++ (with an emphasis on game development) and I am currently a IT Technician for the RSPCA (http://www.rspcavic.org), which is a not-for-profit organisation for the protection of animals.

I enjoy RTS games, Aussie Beer, C++, C#, any form of music not including Opera, and my puppy "Buddy" (who is an Australian Terrier).
Occupation: Network Administrator
Company: RSPCA
Location: Australia Australia

Other popular Miscellaneous articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 2 of 2 (Total in Forum: 2) (Refresh)FirstPrevNext
Generala slight clarification ... ? and thanks ... PinmemberBillWoodruff16:50 6 Jan '09  
GeneralRe: a slight clarification ... ? and thanks ... PinmemberchemicalNova12:18 7 Jan '09  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 6 Jan 2009
Editor: Deeksha Shenoy
Copyright 2009 by chemicalNova
Everything else Copyright © CodeProject, 1999-2009
Web20 | Advertise on the Code Project