C#用webbrowser制作多页面浏览器
我计划用C#做一个多页面浏览器,现在窗体上有一个textbox1(作地址栏)、button1(做“转到”按钮)、webbrowser1、tabcontrol1四个控件。现...
我计划用C#做一个多页面浏览器,现在窗体上有一个textbox1(作地址栏)、button1(做“转到”按钮)、webbrowser1、tabcontrol1四个控件。现在地址栏中输入网址,点击按钮后,可以打开网页,但是问题来了:多按几次网页里的链接后,则使用tabpage打开,只有新开的tabpage可以显示网页,原先开的tabpage在新一个tabpage生成后,就无法显示网页了,变成一片灰!而且程序不能自动选中新的tabpage,而依旧是旧的tabpage被选中,这样就不像我们平时用的多页面浏览器的效果了呀!我给webbrowser定义了一个NewWindow事件,webbrowser调用该事件,我估计是NewWindow事件出了问题,但是又找不出是什么问题。NewWindow事件具体代码如下:
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)//点击,如果本链接是弹出新窗口,事件就会自动截获。
{
try
{
string strurl = webBrowser1.Document.ActiveElement.GetAttribute("href");
if (!strurl.Contains("://"))
strurl = "http://" + strurl;
this.webBrowser1.Url = new System.Uri(strurl, System.UriKind.Absolute);
tabControl1.TabPages.Add(tabControl1.TabPages.Count.ToString());
webBrowser1.Dock = DockStyle.Fill;
tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(webBrowser1);
e.Cancel = true;
}
catch { }
}
现在就想请教各位高手,如何改动以上代码,能使不管新旧的任何一个tabpage都能同时显示网页,而不是只有新tabpage才能显示网页?而且让新的tabpage自动处于选中状态?另外,如何关闭其中的一个tabpage和一次关闭所有的tabpage呢?分别是用什么命令函数?
我知道我提的问题有点多了,所以悬赏50分。高手救救急吧!我停在这上面快一周了,都没有进展,大家帮帮忙。谢谢!!!别人做的C#浏览器源代码我这也有,但是别人的模块、原理和我的比较起来好像差别挺大的,不能直接套用。
我的邮箱:panweikl@163.com 展开
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)//点击,如果本链接是弹出新窗口,事件就会自动截获。
{
try
{
string strurl = webBrowser1.Document.ActiveElement.GetAttribute("href");
if (!strurl.Contains("://"))
strurl = "http://" + strurl;
this.webBrowser1.Url = new System.Uri(strurl, System.UriKind.Absolute);
tabControl1.TabPages.Add(tabControl1.TabPages.Count.ToString());
webBrowser1.Dock = DockStyle.Fill;
tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(webBrowser1);
e.Cancel = true;
}
catch { }
}
现在就想请教各位高手,如何改动以上代码,能使不管新旧的任何一个tabpage都能同时显示网页,而不是只有新tabpage才能显示网页?而且让新的tabpage自动处于选中状态?另外,如何关闭其中的一个tabpage和一次关闭所有的tabpage呢?分别是用什么命令函数?
我知道我提的问题有点多了,所以悬赏50分。高手救救急吧!我停在这上面快一周了,都没有进展,大家帮帮忙。谢谢!!!别人做的C#浏览器源代码我这也有,但是别人的模块、原理和我的比较起来好像差别挺大的,不能直接套用。
我的邮箱:panweikl@163.com 展开
展开全部
我有一个我自己做的你留邮箱我给你
关于你的问题,我不知道你注意没有tabpage有一个属性是用来储存当前获得焦点的那个页面的索引值的。你只要建立一个泛型的浏览器集合(用list)
List<ExtendedWebBrowser> webNew = new List<ExtendedWebBrowser>();//构造一个泛型列表来管理浏览器控件
关闭当前的tabpage 你可以这样:
this.webNew[tabControl1.SelectedIndex].Dispose ( );//析构当前浏览器
this.webNew.Remove ( this.webNew[tabControl1.SelectedIndex] );
tabControl1.TabPages[tabControl1.SelectedIndex].Dispose ( );//析构当前标签页
这样我们就能进行匿名处理这些个浏览器控件了
这个方法绝对可行我告诉你,因为我就这样做的。(现在只差最难的收藏夹了)
一定要用List,因为list是动态数组,它的索引时可变化的,如果你拿array来定义集合就糟糕了。。。
我有全套源码,留邮箱吧
关于你的问题,我不知道你注意没有tabpage有一个属性是用来储存当前获得焦点的那个页面的索引值的。你只要建立一个泛型的浏览器集合(用list)
List<ExtendedWebBrowser> webNew = new List<ExtendedWebBrowser>();//构造一个泛型列表来管理浏览器控件
关闭当前的tabpage 你可以这样:
this.webNew[tabControl1.SelectedIndex].Dispose ( );//析构当前浏览器
this.webNew.Remove ( this.webNew[tabControl1.SelectedIndex] );
tabControl1.TabPages[tabControl1.SelectedIndex].Dispose ( );//析构当前标签页
这样我们就能进行匿名处理这些个浏览器控件了
这个方法绝对可行我告诉你,因为我就这样做的。(现在只差最难的收藏夹了)
一定要用List,因为list是动态数组,它的索引时可变化的,如果你拿array来定义集合就糟糕了。。。
我有全套源码,留邮箱吧
推荐于2016-07-11 · 知道合伙人互联网行家
关注
展开全部
首先在窗体中添加一个combox和一个webbrowser,代码如下
初始化:
Code
前进浏览comboBox1.text代表的url
1 private void button1_Click(object sender, EventArgs e)
2 {
3 string url = comboBox1.Text.Trim();
4
5 webBrowser1.Navigate(url);
6 }
返回前一个浏览的网页
1//后退
2 private void button2_Click(object sender, EventArgs e)
3 {
4 webBrowser1.GoBack();
5
6 }
点击网页中的链接,不在启动IE,而是使用webbrowser继续浏览
Code4
//每次浏览网页后,combox_url中的文本变成当前网页的url
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
comboBox1.Text = webBrowser1.Url.ToString();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当你截获webBrowser1中点击的链接的时候
tabcontrol中添入tabpage并置为选中
在这个新tabpage中加入一个新的webBrowser并使其的
导航uri为你捕获的链接
tabcontrol中添入tabpage并置为选中
在这个新tabpage中加入一个新的webBrowser并使其的
导航uri为你捕获的链接
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你写的太长 没仔细看
但是我想问题应该出在这里
你所使用的所有的tabpages都装载着同一个webBrowser1对吧
这样的话....
在你所打开的tabpage里不论那个转向,都会引起webBrowser1的变化对吧?
这样问题不是出来了么?
至于选中问题,直接tabcontrols.selectindex=tabControl1.TabPages.Count-1
这样就能搞定
关闭也是一样的做法,通过TabPages.Count遍历tabControl1.pages,我没关过pages
但是我十分肯定有这样的方法
但是我想问题应该出在这里
你所使用的所有的tabpages都装载着同一个webBrowser1对吧
这样的话....
在你所打开的tabpage里不论那个转向,都会引起webBrowser1的变化对吧?
这样问题不是出来了么?
至于选中问题,直接tabcontrols.selectindex=tabControl1.TabPages.Count-1
这样就能搞定
关闭也是一样的做法,通过TabPages.Count遍历tabControl1.pages,我没关过pages
但是我十分肯定有这样的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
来梦想黑客联盟学习 信息来源:梦想黑客联盟
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询