WebBrowser 文本选择更改时触发事件

Posted

技术标签:

【中文标题】WebBrowser 文本选择更改时触发事件【英文标题】:Trigger event when WebBrowser text selection changed 【发布时间】:2017-07-24 11:52:13 【问题描述】:

我的程序的两个部分是一个winforms WebBrowser 和一个简单的TextBox

我现在想要的是,当我在WebBrowser 中选择一个文本时,它会自动复制TextBox 中的选定文本。

我在 google 上找不到任何关于此的信息,所以如果有人可以帮助我,我会很高兴!

【问题讨论】:

【参考方案1】:

您可以使用文档的AttachEventHandler 方法将事件处理程序附加到WebBrowser 控件的Documentonselectionchange 事件。然后您可以使用DomDocument 的属性来获取选定的文本。

示例

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

    webBrowser1.Document.AttachEventHandler("onselectionchange", selectionchange);

private void selectionchange(object sender, EventArgs e) 

    dynamic document = webBrowser1.Document.DomDocument;
    dynamic selection = document.selection;
    dynamic text = selection.createRange().text;
    this.textBox1.Text= (string)text;

【讨论】:

【参考方案2】:

您可以试试这个,但这需要一个触发器示例,即单击按钮以将值传递到您的 TextBox1。很遗憾,WebBrowser 控件不支持鼠标事件。

 dynamic document = webBrowser1.Document.DomDocument;
 dynamic selection = document.selection;
 dynamic text = selection.createRange().text;
 TextBox1.Text = text;

【讨论】:

我已经在其他帖子中读到过,但是我怎么知道什么时候选择了?我不能只运行这个方法而不得到选择改变的信息 遗憾的是,WebBrowser 控件不支持鼠标事件@MartinNiederl 我知道,这就是我问这个问题的原因,因为会有办法做到这一点:D

以上是关于WebBrowser 文本选择更改时触发事件的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET WebBrowser 控件 OnClick 事件未触发

无法在选择框更改时触发事件

为啥 WebBrowser_DocumentCompleted() 触发两次?

Ajax AutoCompleteExtender文本框未在边缘浏览器中触发文本更改事件

winform加个webBrowser以后为啥不能触发keyup事件

在 GridView 中触发值更改的回发