【问题标题】:Handling key events on WebBrowser control?处理 WebBrowser 控件上的关键事件?
【发布时间】:2014-11-11 03:37:21
【问题描述】:

目前我正在使用一个可以播放ppt 并在 WebBrowser Control 中闪烁的应用程序。

在 WebBrowser 中,我可以使用

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

并使用

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

但在播放 ppt 时,上下文菜单和按键事件都不起作用,即我可以看到上下文菜单和箭头键强制 ppt 更改幻灯片。

再次在播放 Flash 时,上下文菜单可见,我可以处理按键事件。对于在 webBrowser 中播放的任何内容(HTML、PPT、Flash、PDF),是否有任何其他设置可以相同?

编辑: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 中播放的不同控件的上下文菜单图像
显示网页........

在浏览器中播放的flash...... ....

在浏览器中播放的ppt ....................

【问题讨论】:

    标签: c# flash webbrowser-control powerpoint


    【解决方案1】:

    按照以下步骤摆脱默认上下文菜单

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

      this.IsWebBrowserContextMenuEnabled = false;

    2. 将ContextMenuStrip 控件添加到您的窗口并命名(比如说MyMenu)

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

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

    希望这有帮助!

    一切顺利

    【讨论】:

      【解决方案2】:

      覆盖所有鼠标事件标志Here is an example希望这个例子对你有帮助

      【讨论】:

      • 我仍然无法处理关键事件
      【解决方案3】:

      您必须在正在播放 ppt/flash 的 WebControl 中捕捉 PreviewKeyDown 事件,并将其提升到内容页面或其他内容。

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

      【讨论】:

        猜你喜欢
        • 2010-10-13
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多