私は現在、さまざまな事前定義された機能を持つ c# を使用してカスタムメイドの Web ブラウザーを開発しています。私が遭遇した問題の 1 つは、ステータス ストリップにプログレス バーを追加することです。これを達成するために使用した最初の手法は、webBrowser.Doument.Title を取得し、webBrowser_Navigatedイベントがトリガーされたときにステータス ストリップ ラベルにスローすることです。これは適切に機能しているので問題ありませんが、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]);
}
Loading ラベルのテキストには、選択したタブのみが表示されます。他のタブをクリックすると、現在表示されているタブのステータスではなく、以前にナビゲートした特定のページの読み込みステータスが表示されます。ナビゲートされたイベントでこの行を使用しているため、これは議論の余地がないと思います。selectedTab.Controls[0] 以外に tabBrowser を呼び出す方法が見つかりません。ここでの回避策が、各タブにステータスバーをプログラムで追加することであるかどうかはわかりませんが、その方法がわからないか、可能かどうかさえわかりません。
ブラウザでのタブ操作について説明しましたが、タブ タイトルの横に読み込み中の 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++;
}