替换Webbrowser默认的弹出菜单

本文介绍了一个使用HTML、CSS、JavaScript等技术实现网页元素的交互,并自定义浏览器弹出菜单的设计案例,包括超链接、图片的操作及刷新、查看源代码等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.Threading;
 using HtmlDom;
 namespace HTMLElementSelect
 {
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }
         AboutForm afrm=new AboutForm();
         private void Form1_Load(object sender, EventArgs e)
         {
             webBrowser1.Navigate("http://www.cnblogs.com/JiangHuakey/"); 
            webBrowser1.ContextMenuStrip = contextMenuStrip1;    //! 设置我们自己的弹出菜单
             webBrowser1.IsWebBrowserContextMenuEnabled = false;  //! 禁用IE默认的弹出菜单
         }
 
        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
         {
             //! 屏幕坐标
             Point ScreenCoord = new Point(MousePosition.X, MousePosition.Y);
             //! 浏览器坐标
             Point BrowserCoord = webBrowser1.PointToClient(ScreenCoord);
             HtmlElement elem = webBrowser1.Document.GetElementFromPoint(BrowserCoord);
 
            //! 隐藏所有菜单项
             for (int i = 0; i < contextMenuStrip1.Items.Count; i++)
             {
                 contextMenuStrip1.Items[i].Visible = false;
             }
 
            //! 显示对应的菜单
             switch (elem.TagName)
             {
                 case "A":
                     //! 如果是一个超链接,则显示相关超链接的菜单项
                     openToolStripMenuItem.Visible = true;
                     openInNewTabToolStripMenuItem.Visible = true;
                     openInNewWindowToolStripMenuItem.Visible = true;
                     break;
                 case "IMG":
                     //! 如果是图片,则显示相关图片的菜单项
                     saveImageToolStripMenuItem.Visible = true;
                     setAsDesktopWallpaperToolStripMenuItem.Visible = true;
                     break;
                 default:
                     //! 其它
                     refreshToolStripMenuItem.Visible = true;
                     viewSourceToolStripMenuItem.Visible = true;
                     break;
             }
         }
         
        void SaveImageToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void SetAsDesktopWallpaperToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void OpenToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void OpenInNewTabToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void OpenInNewWindowToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void RefreshToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
         
        void ViewSourceToolStripMenuItemClick(object sender, EventArgs e)
         {
          afrm.Show();
         }
     }
 }

转载于:https://www.cnblogs.com/lujin49/archive/2012/01/05/2312878.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值