【问题标题】:Using browser search `Ctrl+F` through a button in user control通过用户控件中的按钮使用浏览器搜索“Ctrl+F”
【发布时间】:2018-03-02 18:46:18
【问题描述】:

在我的用户控件中,我使用 webbrowser 元素作为富文本编辑器。按下Ctrl+F 时会显示一个winform,您可以键入搜索。但每个用户可能不知道Ctrl+F 进行搜索。因此,我在 toolStrip 菜单中添加了一个用于搜索的图标。但我不知道我在SearchButton_Click 事件中编写了什么代码来显示搜索表单,就像点击了Ctrl+F

【问题讨论】:

    标签: c# .net winforms webbrowser-control keyboard-shortcuts


    【解决方案1】:

    您可以使用IOleCommandTargetcommands 发送到托管的Web 控件。应该是等价于HtmlDocument.ExecCommand 方法,但是由于某种原因,有些命令在后面不起作用。

    你要的命令是IDM_FIND

    下面是一些运行它的 C# 代码:

    private void SearchButton_Click(object sender, EventArgs e)
    {
        dynamic ax = webBrowser1.ActiveXInstance;
    
        // IHtmlDocument2 also implements IOleCommandTarget
        var qi = (IOleCommandTarget)ax.Document;
    
        // MSHTML commands group
        var CGID_MSHTML = new Guid("de4ba900-59ca-11cf-9592-444553540000");
        const int IDM_FIND = 67;
        qi.Exec(CGID_MSHTML, IDM_FIND, 0, null, null);
    }
    
    [Guid("b722bccb-4e68-101b-a2bc-00aa00404770"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IOleCommandTarget
    {
        void NotDefinedHere(); // don't remove this
    
        [PreserveSig]
        int Exec([MarshalAs(UnmanagedType.LPStruct)] Guid pguidCmdGroup, int nCmdID, int nCmdexecopt, object pvaIn, [In, Out] object pvaOut);
    }
    

    【讨论】:

    • Hohayda... 非常感谢您的精彩回答。这对我来说是一个无法解决的问题。
    • webbrowser1 出错(名称不存在)。我正在使用 ASP.net 和 C#
    • @shomaail - 请再问一个问题,听起来像是编译问题。
    • @simon 我在这里找到了我的问题stackoverflow.com/questions/8080217/…
    【解决方案2】:

    作为另一个简单的选项,您可以简单地将 Ctrl+F 发送到WebBrowser:

    private void findToolStripButton_Click(object sender, EventArgs e)
    {
        webBrowser1.Focus();
        SendKeys.Send("^f");
    }
    

    【讨论】:

    • 熟能生巧,别担心 :)
    • webbrowser1 出错(名称不存在)。我正在使用 ASP.net 和 C#
    • @shomaail 这是一个 Windows 窗体问题,webBrowser1 指向您在窗体上放置的 WebBrowser 控件实例。它与 ASP.NET 无关。
    猜你喜欢
    • 2011-12-26
    • 2021-09-23
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多