Атрибут html-элемента в браузере c # с использованием потоков - PullRequest
0 голосов
/ 11 октября 2018

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

private void button1_Click(object sender, EventArgs e)
        {
           webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
            webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");


        }`

, но когда я пытаюсь сделать это с помощью потоков, это выдает мне ошибку

Указанное приведение неверно?

private void button1_Click(object sender, EventArgs e)
        {

            Thread thread1 = new Thread(new ThreadStart(setvalues));
            thread1.Start();


        }

void setvalues() 
        {

                webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
                webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");

                Thread.Sleep(8000);

            }
        }

где я делаю ошибку в коде?любая ошибка?я новичок, мне нужна помощь

1 Ответ

0 голосов
/ 11 октября 2018

Вы не можете получить доступ к элементам управления формы в отдельном потоке.Попробуйте это в setvalues():

Invoke((Action)(() => {
     webBrowser1.Document.GetElementById("username").SetAttribute("value","admin"); 
     webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
}));
...