如何在statusstrip上添加1个进度条以指示每个选项卡上每个web浏览器的加载?

时间:2012-11-17 00:04:32

标签: c# progress-bar webbrowser-control tabcontrol statusstrip

我目前正在使用具有不同预定义功能的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]);
    }
  1. 加载标签的文本仅显示所选选项卡,当您单击其他选项卡时,它仍将显示您先前导航的特定页面的加载状态,而不是您当前所在选项卡的状态。我认为这是不可争辩的,因为我在导航事件中使用这一行。除了selectedTab.Controls [0]之外,我找不到任何其他调用tabBrowser的方法。我不确定这里的工作是否以编程方式在每个选项卡上添加状态栏,我不知道该怎么做,甚至不知道是否可能。

  2. 现在我已经在我的浏览器上提到了tabbing,如果我可能会问,是否可以在Tab Title的一侧添加一个加载gif,表明该选项卡上的浏览器仍在加载?如果有人能教我怎么做,这对我来说是一个巨大的帮助。 =)

  3. 正如我所说,我正在使用标签来表示我的浏览器正在加载,因为标题暗示我希望并且我祈祷我可以使它成为进度条。标签的问题在于,当浏览器的页面加载时间过长时,用户会认为我的系统没有做任何事情。

  4. 所以这涵盖了一切,我感谢所有帮助我解决上一个问题的人,这个问题有点棘手,我希望我能够非常清楚地说明这一点。以下是我用来实例化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++;
        }
    

0 个答案:

没有答案