Слушайте угловое событие, нажмите на веб-браузер - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение winform.
В форме у меня есть контроль веб-браузера, что URI является угловым приложением.
Я хочу, чтобы, когда я нажимал кнопку (на приложении углового в веб-браузере), событие в форме в winformэто повышение.

Как я могу это сделать?

Я видел пример кода, который позволяет вам слушать событие в DOM, и мне нужно что-то такое же, как прослушивание щелчкакнопка:

Класс слушателя:

public class DOMListener
{
    public event Action DOMChanged;

    private WebBrowser Browser;

    public DOMListener(WebBrowser webbrowser)
    {
        this.Browser = webbrowser;
        this.Browser.ObjectForScripting = this;
        this.Browser.DocumentCompleted += OnDOMLoaded;
    }

    private void OnDOMLoaded(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElement script = this.Browser.Document.CreateElement("script");
        script.InnerHtml = "function listenToDOM() { document.addEventListener('DOMSubtreeModified', function(e) { window.external.DOMUpdate() }); }";
        this.Browser.Document.GetElementsByTagName("body")[0].AppendChild(script);
        this.Browser.Document.InvokeScript("listenToDOM");
    }

    public void DOMUpdate()
    {
        if (this.DOMChanged != null) this.DOMChanged.Invoke();
    }
}

В форме .cs:

Public void Initialize()
    {
        try
        {

            this.Listener = new DOMListener(this.webBrowser1);
            this.Listener.DOMChanged += this.OnDOMChanged;
            this.webBrowser1.Navigate(new Uri("http://localhost:5050/Api/IESAngularDemo/"));
        }
        catch(Exception ex)
        {
            throw;
        }
    }

    void OnDOMChanged()
    {
        Console.WriteLine(DateTime.Now.ToLongTimeString() + ": DOM changed");
    }
...