工作原理
当该程序启动后,它所做的第一件事是调用 Create_a_new_tab()。此方法创建一个新选项卡页,将其添加到 TabControl,然后在其上创建一个 WebBrowser 控件。WebBrowser URL 被设定为“主页”,无论它在您的系统上可能是什么。下面是创建新选项卡的代码:
// Create a new Tab Page
TabPage newpage = new TabPage("Loading...");
tabControl1.TabPages.Add(newpage);
// Create a new WebBrowser control.
WebBrowser webpage = new WebBrowser();
webpage.Parent = newpage;
webpage.Dock = DockStyle.Fill;
webpage.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webpage_DocumentCompleted);
webpage.GoHome();
此代码确定 WebBrowser 的父级是 Tab 页。它还用设置为 Fill 的 Dock 来确定它也保持在窗口的实际大小。我们还添加了一个事件处理程序:控件通过将消息发送到您的程序来工作。您可以选择您所聆听的消息,以及通过将事件处理程序链接到消息所调用的方法。在本例中,该消息告诉我们 WebControl 已经完成了站点的加载和显示,当完成任务时,它将调用名为 webpage_DocumentComplete() 的方法。这允许我们定义当网页加载完毕时执行的代码。例如,停止动画。
Create_a_new_tab() 方法中的最后一行启用计时器:
timer1.Enabled = true;
计时器轻松地将小段消息发送到 timer1_tick(),它改变在 PictureBox 控件中显示的图像,如下所示:
private void timer1_Tick(object sender, EventArgs e)
{
// This method is called by the timer, and we use it to update the
// image displayed by the PictureBox control to create a simple
// animation.
image_animation++;
if (image_animation > 10) image_animation = 0;
switch (image_animation)
{
case 0: pictureBox_busy.Image = wbe.Properties.Resources.anim0; break;
case 1: pictureBox_busy.Image = wbe.Properties.Resources.anim1; break;
case 2: pictureBox_busy.Image = wbe.Properties.Resources.anim2; break;
...
case 7: pictureBox_busy.Image = wbe.Properties.Resources.anim7; break;
case 8: pictureBox_busy.Image = wbe.Properties.Resources.anim8; break;
case 9: pictureBox_busy.Image = wbe.Properties.Resources.anim9; break;
}
}
您可以看到,计时器每次激发时,在 PictureBox 中就会显示一个不同的图像。使用您将一个图像分配到按钮或 PictureBox 控件时显示的对话框,从磁盘加载图像。
程序的其余部分由事件驱动 — 当用户单击按钮或者输入一个 Web 地址或搜索字符串时调用特定方法。
例如,Web 导航按钮都调用当前 WebBrowser 控件。例如,如果您单击 Back 按钮,会调用以下方法:
private void button_back_Click(object sender, EventArgs e)
{
// Go Back - if the web control can go back, do it.
WebBrowser thiswebpage = GetCurrentWebBrowser();
if (thiswebpage.CanGoBack)
thiswebpage.GoBack();
}
当在 Address 组合框中输入一个 URL 时,我们使用 Web 控件的 navigate 方法来获取并显示该页。下面的代码使用了当前显示在组合框中的文本并将其传递到 navigate 方法:
WebBrowser thiswebpage = GetCurrentWebBrowser();
thiswebpage.Navigate(comboBoxurl.Text);
timer1.Enabled = true;