我目前正在使用具有不同预定义功能的c#开发定制Web浏览器。我遇到的一个问题是在状态条上添加进度条。我用来实现这一目标的第一项技术是在 webBrowser_Navigated 时获取 webBrowser.Doument.Title 并将其投放到状态条标签事件已被触发。现在这是可以接受的,因为它工作正常,但当我决定让我的webBrowser能够添加新标签时,我的工作变得更加困难。我使用扩展的Web浏览器来实现这一点,我也在SO上找到了这个。以下问题不断给我带来麻烦。我是c#的新手,所以对我来说,我觉得这个问题非常困难。 =)
private void web_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
ExtendedWebBrowser web_navigated = new ExtendedWebBrowser();
statusLoading.Text = "Loading " + ((ExtendedWebBrowser)TabControl1.SelectedTab.Controls[0]);
}
加载标签的文本仅显示所选选项卡,当您单击其他选项卡时,它仍将显示您先前导航的特定页面的加载状态,而不是您当前所在选项卡的状态。我认为这是不可争辩的,因为我在导航事件中使用这一行。除了selectedTab.Controls [0]之外,我找不到任何其他调用tabBrowser的方法。我不确定这里的工作是否以编程方式在每个选项卡上添加状态栏,我不知道该怎么做,甚至不知道是否可能。
现在我已经在我的浏览器上提到了tabbing,如果我可能会问,是否可以在Tab Title的一侧添加一个加载gif,表明该选项卡上的浏览器仍在加载?如果有人能教我怎么做,这对我来说是一个巨大的帮助。 =)
正如我所说,我正在使用标签来表示我的浏览器正在加载,因为标题暗示我希望并且我祈祷我可以使它成为进度条。标签的问题在于,当浏览器的页面加载时间过长时,用户会认为我的系统没有做任何事情。
所以这涵盖了一切,我感谢所有帮助我解决上一个问题的人,这个问题有点棘手,我希望我能够非常清楚地说明这一点。以下是我用来实例化ExtendedWebBrowser的代码我创建了一个函数“OpenNewTab()”,这样当我调用它时会自动生成一个新选项卡和一个浏览器。
private void OpenNewTab(string url, string title="New Tab")
{
web = new ExtendedWebBrowser();
web.ScriptErrorsSuppressed = true;
web.Dock = DockStyle.Fill;
web.Visible = true;
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
web.Navigated += new WebBrowserNavigatedEventHandler(web_Navigated);
web.Navigating += new WebBrowserNavigatingEventHandler(web_Navigating);
InitializeBrowserEvents(web);
TabControl1.TabPages.Add(title + " x");
TabControl1.SelectTab(page_counter);
TabControl1.SelectedTab.Controls.Add(web);
page_counter++;
((WebBrowser)TabControl1.SelectedTab.Controls[0]).Navigate(url);
}
//I am not sure if i should include other browser events here, as you can see the other three are up there. =)
private void InitializeBrowserEvents(ExtendedWebBrowser SourceBrowser)
{
SourceBrowser.NewWindow2 += new EventHandler<NewWindow2EventArgs>(SourceBrowser_NewWindow2);
}
//This event right here is the one responsible for catching the open in a new window and throwing it to a
//new tab, because the open in a new tab is always disabled at web browser i presumed this is the only option they
//have, whoever made the ExtendedWebBrowser I thank you for this code he gains all the credit. =)
private void SourceBrowser_NewWindow2(object sender, NewWindow2EventArgs e)
{
TabPage NewTabPage = new TabPage()
{
Text = "New Tab x"
};
web = new ExtendedWebBrowser()
{
Parent = NewTabPage,
Dock = DockStyle.Fill,
Tag = NewTabPage
};
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);
web.Navigated += new WebBrowserNavigatedEventHandler(web_Navigated);
e.PPDisp = web.Application;
InitializeBrowserEvents(web);
TabControl1.TabPages.Add(NewTabPage);
TabControl1.SelectedTab = NewTabPage;
page_counter++;
}