2016-09-18 6 views
0

Итак, я долгое время боролся с этой проблемой. Я пытаюсь выяснить, как я могу включить таймер и установить его интервал до 1000, когда веб-страница будет загружена?C# Подождите, пока браузер не загрузится, а затем запустите таймер

Вот код, который я попытался с до сих пор:

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

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      webBrowser1.Navigate("website.com"); 
      webBrowser1.ScriptErrorsSuppressed = true; 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("brukernavn")[0].SetAttribute("value", textBox1.Text); 
      webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("passord")[0].SetAttribute("value", textBox2.Text); 
      webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("login_buton")[0].InvokeMember("click"); 
      timer1.Enabled = true; 
      timer1.Interval = 7000; 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      webBrowser1.Navigate("website.com/mygambling.php"); 
//Here i need a code to enable timer2 whit interval 1000 when the website is finnished loading 
     } 

     private void timer2_Tick(object sender, EventArgs e) 
     { 
      webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("bet")[0].SetAttribute("value", 250); 
      webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("start")[0].InvokeMember("click"); 
     } 
    } 
} 

Так что мой вопрос, как я могу позволить Timer2 и установить Таймер2 интервал до 1000, когда страница загрузилась?

+2

Вы обрабатываете [WebBrowser.DocumentCompleted] (https://msdn.microsoft.com/en-us/library/system.windows.forms. webbrowser.documentcompleted (v = vs.110) .aspx)? – GSerg

ответ

4

Вы уже знаете, как включить таймеры. У веб-браузера есть событие DocumentCompleted, на котором вы можете подписаться. Это поможет вам определить, когда загрузка страницы завершена:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate("website.com/mygambling.php"); 
    webBrowser1.DocumentCompleted += DocumentCompleted; 
} 

private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    webBrowser1.DocumentCompleted -= DocumentCompleted; 
    timer2.Enabled = true; 
} 
+0

Другими словами, мы должны подписаться на событие 'DocumentCompleted', чтобы убедиться, что мы можем управлять' WebBrowser' 'webBrowser1.DocumentCompleted + = (объект отправителя, WebBrowserDocumentCompletedEventArgs е) => { system.diagnostics. Debug.WriteLine («Документ уже загружен, и теперь я могу делать манипуляции поверх него!»); }; ' –

+0

To - Thomas Weller: почему отменена подписка и какая польза' webBrowser1.DocumentCompleted - = DocumentCompleted; '? –

+2

@LJ: поскольку я не знаю, что будет сделано дальше, я отпишусь от мероприятия. Это позволяет перемещаться в другом месте, не включая таймеры снова, когда загружается следующая страница. –

Смежные вопросы