搜索|收藏|地图|订阅|图片|论坛|商城

VS2005打造简单分页浏览器

来源:龙腾软件教程网 编辑:若水 时间:2008-05-08


  说明:和菜单栏实现的功能类似,也是一些简单的调用,仅仅是表现形式不同。

初始化

#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){..}事件是比较重要的,我认为它是整个程序的核心部分。

  tabControl1事件

#region//tabControl1事件
/// <summary>
/// 切换tab
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
 WebBrowser mybor = (WebBrowser)tabControl1.SelectedTab.Controls[0];
 if (mybor.Url != null)
 {
  //地址输入框
  tscbUrl.Text = mybor.Url.ToString();
  tabControl1.SelectedTab.Text = newstring(mybor.DocumentTitle);
 }
 else
 {
  tscbUrl.Text = "about:blank";
  tabControl1.SelectedTab.Text = "空白页";
 }
 setStatusButton();
}
/// <summary>
/// 关闭当前tab
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_DoubleClick(object sender, EventArgs e)
{
 //仅仅剩下一个tab时返回
 if (tabControl1.TabPages.Count <= 1)
 {
  tabControl1.SelectedTab.Text = "空白页";
  getCurrentBrowser().Navigate("about:blank");
 }
 else
 {
  //先将tabControl1隐藏然后remove掉目标tab(如果不隐藏则出现闪烁,即系统自动调转到tabControl1的第一个tab然后跳会。)最后显示tabControl1。
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?