处理WebBrowser控件上的关键事件?

时间:2014-09-17 07:34:06

标签: c# flash webbrowser-control powerpoint

目前我正在使用一个在WebBrowser Control中播放ppt和flash的应用程序。

在WebBrowser中,我可以使用

隐藏上下文菜单
this.IsWebBrowserContextMenuEnabled = false;

并使用

捕获键事件
this.PreviewKeyDown += new PreviewKeyDownEventHandler(IWebBrowser_PreviewKeyDown);

但是在播放ppt时,上下文菜单和按键事件都无法正常工作,即我可以看到上下文菜单和箭头键强制ppt更改幻灯片。

再次播放flash时,上下文菜单可见,我可以处理关键事件。是否有任何其他设置可以在webBrowser中播放任何内容(HTMLPPTFlashPDF)?

修改:1 这是我现有的代码

class IWebBrowser : WebBrowser
public IWebBrowser(RegionOptions options)
{
    try
    {
        this.Width = 600;
        this.Height = 400;
        this.IsWebBrowserContextMenuEnabled = false;
        this.ScrollBarsEnabled = false;
        this.ScriptErrorsSuppressed = true;
        this.WebBrowserShortcutsEnabled = false;
        this.AllowNavigation = true;
        CreateContextMenu();
        this.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(IWebBrowser_DocumentCompleted);
        this.PreviewKeyDown += new PreviewKeyDownEventHandler(IWebBrowser_PreviewKeyDown);
    }
    catch (Exception ex)
    {
        log.Error("IWebBrowser - ctor ", ex);
    }
}
private void CreateContextMenu()
{

    ContextMenuStrip myContextMenu = new ContextMenuStrip();
    this.ContextMenuStrip = myContextMenu;

    ToolStripMenuItem myFirstTooltip = new ToolStripMenuItem();
    ToolStripMenuItem mySecondTooltip = new ToolStripMenuItem();
    ToolStripMenuItem myThirdTooltip = new ToolStripMenuItem();

    myFirstTooltip.Text = "Item One";
    mySecondTooltip.Text = "Item Two";
    myThirdTooltip.Text = "Item Three";

    myContextMenu.Items.Add(myFirstTooltip);
    myContextMenu.Items.Add(mySecondTooltip);
    myContextMenu.Items.Add(myThirdTooltip);
}

上下文菜单webbrowser中播放的不同控件的图像
显示网页..................
Contextmenu webpage
flash在webbrowser中播放.................
Context menu in flash(displayed in webbrowser)
ppt在webbrowser中播放.....................
Context menu in PPT(displayed in webbrowser)

3 个答案:

答案 0 :(得分:2)

按照以下步骤删除默认上下文菜单

  1. 执行您为隐藏默认上下文菜单所做的工作

    this.IsWebBrowserContextMenuEnabled = false;

  2. 在您的窗口中添加ContextMenuStrip控件并给出一个名称(比方说MyMenu)

  3. 将浏览器控件的ContextMenuStrip属性设置为MyMenu

  4. 现在,无论您在浏览器控件上显示哪种文档类型,它都只显示您的自定义菜单。

    希望这有帮助!

    一切顺利

答案 1 :(得分:1)

覆盖所有鼠标事件标志Here is an example我希望此示例能为您提供帮助

答案 2 :(得分:0)

您必须在WebControl中捕获PreviewKeyDown事件,在该事件中播放您的ppt / flash并将其升级到内容页面或其他任何内容。

您可以查看如何: define Custom Event for WebControl in asp.net