diff --git a/NewsForm.cs b/NewsForm.cs index 10b442b..a6cc9e0 100644 --- a/NewsForm.cs +++ b/NewsForm.cs @@ -26,6 +26,7 @@ namespace NewsCrawler System.Timers.Timer m_CrawlTimer = new System.Timers.Timer(); int m_iCrawlInterval = 500; + bool m_bBrowserReload = false; @@ -134,12 +135,9 @@ namespace NewsCrawler lvList.Items.Add(new ListViewItem(new string[] { time.ToString("HH:mm:ss"), strTitle, strRef, strURL })); - if(chAutoSelect.Checked == true) + if(bInitial == false && chAutoSelect.Checked == true) { - lvList.Items[lvList.Items.Count - 1].Selected = true; - lvList.Select(); - if(lvList.SelectedItems.Count > 0) - lvList.SelectedItems[0].EnsureVisible(); + m_bBrowserReload = true; } foreach(ColumnHeader col in lvList.Columns) @@ -539,6 +537,29 @@ namespace NewsCrawler return bHasNew; } + private void UpdateBrowser() + { + if(lvList.InvokeRequired == true) + { + lvList.Invoke(new Action(UpdateBrowser)); + } + else + { + if(chAutoSelect.Checked == true && m_bBrowserReload == true) + { + if(lvList.SelectedItems.Count == 0 || lvList.SelectedItems[0].Index != lvList.Items.Count-1) + { + lvList.Items[lvList.Items.Count - 1].Selected = true; + lvList.Select(); + if(lvList.SelectedItems.Count > 0) + lvList.SelectedItems[0].EnsureVisible(); + } + + m_bBrowserReload = false; + } + } + } + private void CrawlTimer_Tick(object sender, EventArgs e) { m_CrawlTimer.Enabled = false; @@ -554,6 +575,8 @@ namespace NewsCrawler ReadFinacialNews(); } + UpdateBrowser(); + m_CrawlTimer.Interval = m_iCrawlInterval; m_CrawlTimer.Enabled = true; }