Зачем терять контроль веб-браузера при добавлении обработчика событий клика? - PullRequest
0 голосов
/ 18 мая 2011

Я использую .NET visual C # 2008, и в своем веб-браузере я добавил обработчик событий щелчка, чтобы зафиксировать, какое имя HTML-тега я щелкнул.

Но потом я потерял контроль над веб-браузером.

Когда я запускаю приложение, в веб-браузере я не могу ввести текст в текстовое поле в браузере. Он по-прежнему принимает щелчки мыши по ссылкам.

Я нашел несколько людей, имеющих эту проблему на форумах, но решение не найдено. Что я делаю не так?

код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IERecorder
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private mshtml.HTMLDocument doc = null;



        private void Form1_Load_1(object sender, EventArgs e)
        {

            txtRecord.Items.Add("start...");
            txtRecord.Items.Add("start2...");
            webBrowser1.Navigate("http://www.google.com");
        }


        private void webBrowser1_DocumentComplete(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

            txtRecord.Items.Add(e.Url.ToString() + " loaded...");

            if (doc == null)
            {
                doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
                mshtml.HTMLDocumentEvents2_Event iEvent;
                iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
                iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);

            }

        }

        private bool ClickEventHandler(mshtml.IHTMLEventObj e)
        {
            txtRecord.Items.Add("clicked ==>" + e.srcElement.tagName);
            txtRecord.Items.Add("clicked2 ==>" + e.srcElement.getAttribute("name", 0));

            txtRecord.Items.Add("clicked3 ==>" + e.srcElement.innerHTML);

            return true;
        }


    }
}

Ответы [ 2 ]

2 голосов
/ 12 марта 2018

Это проблема, связанная с фреймворком, она не будет работать на фреймворке 3.5. Измените структуру проекта на 4.5.2, она будет работать.

1 голос
/ 18 мая 2011

Я не вижу текстовое поле в вашем коде?Вы имели в виду окно поиска Google?

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...