我有一个表格,在它的顶部我放了一个标签。 在此标签中,每当用户打开程序时,此标签将连接到PasteBin站点。 (您可以粘贴或输入任何内容的网站,最后您可以创建关于您输入内容的链接。) 现在我可以在表单的顶部创建一个突发新闻,它很有效。 但这只会发生一次。让我先把我的代码放在这里:
private void Form1_Load(object sender, EventArgs e)
{
WebRequest.Create("http://pastebin.com/raw/vkABdKag");
lblNews2.Text = new System.Net.WebClient().DownloadString("http://pastebin.com/raw/vkABdKag");
lblNews2.ForeColor = System.Drawing.Color.White;
}
但这只会发生一次。 我的意思是即使我更改了此URL中的文本,也会显示最后一个文本。 似乎该程序只下载文本一次,它将显示在表单的顶部。 现在这是我的问题。 如何将此代码或代码添加到此代码中,每当用户打开程序时,如果此URL中的文本已更改,则首先检查此链接。 是否有任何代码:刷新或重新加载或...为此功能? 提前感谢您的回答。
答案 0 :(得分:2)
首先将下载代码放入单独的函数中,以便您可以根据需要调用它:
string getNewsFrom(string url)
{
string content = new System.Net.WebClient().DownloadString(url);
return content;
}
接下来,将Timer
组件从工具箱中拉到Form
。称之为newsTimer
。将其Interval
设置为您喜欢的时间。
newsTimer.Interval = 5 * 60 * 1000; // set the timer to tick every 5 minutes
双击Timer
组件并对生成的Tick
事件进行编码:
private void newsTimer_Tick(object sender, EventArgs e)
{
lblNews2.Text = getNewsFrom(yourUrl);
}
这假设您有一个类级别变量yourUrl
,其中包含您要使用的网址。
如果您愿意,可以在表单中添加CheckBox
并将其命名为newsListening
。双击它以创建CheckedChanged
事件并将其编码为:
private void newsListening_CheckedChanged(object sender, EventArgs e)
{
newsTimer.Enabled = newsListening.Checked;
if (newsTimer.Enabled) newsTimer_Tick(null, null); do one download immediately!
}
如果您希望计时器一直运行,Start()
可以form_Load
;如果您想使用CheckBox
并从Timer
开始运行,请在加载事件中添加CheckedChanged
来触发newsListening_Checked = true;
事件!
现在,您将每五分钟更新一次当前内容,并可以启动和停止计时器。
请注意,使用WebRequest
时,您不需要WebClient
。