いくつかの条件が満たされるまで、WebページをリフレッシュするC#の小さなアプリケーションを開発中です。私は "火" =ボタンを爽やかに開始し、 "停止!"ボタンをクリックして操作を停止します。私の問題は、1の代わりにストップボタンを2回押してみることです。以下は私のコードです:私のボタンは1回ではなく2回クリックする必要があります
タイマーでコードを更新しました。まだ私は、タイマのいくつかのより良い使用することができると思う、私は最初の2-3のリフレッシュ後、または毎回更新されない毎秒更新しないと思う。私のコードに、私が検出できない欠陥がありますか?
private void FireButtonClick(object sender, EventArgs e)
{
try
{
if (webBrowser1.Url.ToString().StartsWith("some url"))
{
_stopped = false;
_timer.Tick += new EventHandler(RefreshBrowser);
_timer.Interval = (1000) * (1);
_timer.Enabled = true;
_timer.Start();
}
else
{
MessageBox.Show("You must logon first.");
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void RefreshBrowser(object sender, EventArgs e)
{
string content = "disabled";
string baseUrl = @"http://some url";
string newUrl = string.Empty;
string buttonXpath = @"/html/body/div/div[6]/table/tr/td[2]/table/tr/td/table/tr/td/table/tr[3]/td[2]/div[4]/a";
webBrowser1.Refresh();
_proceed = false;
if (!content.ToLower().Equals("disabled") && !_stopped)
{
if (!_stopped)
{
HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(webBrowser1.DocumentText);
HtmlNode node = htmlDocument.DocumentNode.SelectSingleNode(buttonXpath);
content = node.GetAttributeValue("disabled", string.Empty);
newUrl = node.GetAttributeValue("href", string.Empty);
}
}
else
{
webBrowser1.Navigate(baseUrl + newUrl);
}
}
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
_proceed = true;
urlTextBox.Text = webBrowser1.Url.ToString();
}
private void MainPageButtonClick(object sender, EventArgs e)
{
try
{
webBrowser1.Navigate(_mainPage);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void GoButtonClick(object sender, EventArgs e)
{
try
{
webBrowser1.Navigate(urlTextBox.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void StopButtonClick(object sender, EventArgs e)
{
_timer.Stop();
_proceed = true;
_stopped = true;
}
}
私は自分の質問をいくつかの 'Timer'コードで編集しました。 – iCantSeeSharp
私は100%確信していませんが、時々ロードされる前にページがリフレッシュされていると思います。 – iCantSeeSharp
はい、あなたは正しいです、 'RefreshBrowser'メソッドの一番下に' Refresh'へ呼び出しを移動してください。 'Navigate'の後に呼び出さなければなりません – jdehaan