初始化
#region//初始化
/// <summary>
/// 初始化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
initMainForm();
}
/// < summary>
/// 初始化浏覽器
/// </summary>
private void initMainForm()
{
TabPage mypage = new TabPage();
WebBrowser tempBrowser = new WebBrowser();
tempBrowser.Navigated += new WebBrowserNavigatedEventHandler (tempBrowser_Navigated);
tempBrowser.NewWindow += new CancelEventHandler(tempBrowser_NewWindow);
tempBrowser.StatusTextChanged += new EventHandler (tempBrowser_StatusTextChanged);
tempBrowser.ProgressChanged += new WebBrowserProgressChangedEventHandler (tempBrowser_ProgressChanged);
tempBrowser.Dock = DockStyle.Fill;
tempBrowser.GoHome();//和新建空白頁不同
mypage.Controls.Add(tempBrowser);
tabControl1.TabPages.Add (mypage);
}
#endregion
說明:分頁浏覽器初始化時 要定向到主頁,雖然我們的浏覽器暫時沒有提供設置主頁的功能。
臨時 浏覽器事件
#region//臨時浏覽器事件
/// <summary>
/// 臨時浏覽器狀態變化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void tempBrowser_StatusTextChanged(object sender, EventArgs e)
{
WebBrowser myBrowser = (WebBrowser)sender;
if (myBrowser != getCurrentBrowser())
{
return;
}
else
{
toolStripStatusLabel1.Text = myBrowser.StatusText;
}
}
/// <summary>
/// 在當前頁面上重新定向
/// </summary>
/// <param name="address">url </param>
private void newCurrentPageUrl(String address)
{
getCurrentBrowser().Navigate(getUrl(address));
}
/// <summary>
/// 臨時浏覽器產生新窗體事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void tempBrowser_NewWindow(object sender, CancelEventArgs e)
{
//獲取觸發tempBrowser_NewWindow事件的浏覽器
WebBrowser myBrowser = (WebBrowser)sender;
//獲取觸發tempBrowser_NewWindow 事件的浏覽器所在TabPage
TabPage mypage = (TabPage) myBrowser.Parent;
//通過StatusText屬性獲得新的url
string NewURL = ((WebBrowser)sender).StatusText;
//生成新的一頁
TabPage TabPageTemp = new TabPage();
//生成新的tempBrowser
WebBrowser tempBrowser = new WebBrowser();
//臨時浏覽器定向 到新的url
tempBrowser.Navigate(NewURL);
tempBrowser.Dock = DockStyle.Fill;
//為臨時浏覽器關聯NewWindow等事件
tempBrowser.NewWindow += new CancelEventHandler (tempBrowser_NewWindow);
tempBrowser.Navigated += new WebBrowserNavigatedEventHandler(tempBrowser_Navigated);
tempBrowser.ProgressChanged += new WebBrowserProgressChangedEventHandler(tempBrowser_ProgressChanged);
tempBrowser.StatusTextChanged+=new EventHandler (tempBrowser_StatusTextChanged);
//將臨時浏覽器添加到臨時 TabPage中
TabPageTemp.Controls.Add(tempBrowser);
//將臨 時TabPage添加到主窗體中
this.tabControl1.TabPages.Add (TabPageTemp);
//使外部無法捕獲此事件
e.Cancel = true;
}
/// <summary>
/// 臨時浏覽器定向完畢
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tempBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
tscbUrl.Text = getCurrentBrowser().Url.ToString();
WebBrowser mybrowser = (WebBrowser)sender;
TabPage mypage= (TabPage)mybrowser.Parent;
//設置臨時浏覽器所在tab標題
mypage.Text= newstring(mybrowser.DocumentTitle);
}
#endregion
說明:臨時浏覽器實際上是用程序的方式先new出 一個tempBrowser然後添加到一個分頁中去。其中這個tempBrowser我稱它為臨時 浏覽器。其中void tempBrowser_NewWindow(object sender, CancelEventArgs e){..}事件是比較重要的,我認為它是整個程序的核心部分。