说明:和菜单栏实现的功能类似,也是一些简单的调用,仅仅是表现形式不同。
初始化
| #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
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
热点关注
相关文章
|



