在表单顶部发布新闻

时间:2016-03-25 10:47:34

标签: c# winforms visual-studio

我有一个表格,在它的顶部我放了一个标签。 在此标签中,每当用户打开程序时,此标签将连接到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中的文本已更改,则首先检查此链接。 是否有任何代码:刷新或重新加载或...为此功能? 提前感谢您的回答。

1 个答案:

答案 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