私は小さなプロジェクト(webbrowser)でWeifenLuoのDockPanelSuiteを使用しており、タブを作成して各タブ内のwebbrowser要素をナビゲートできるようになりました。
しかし、ページが別のサイトに移動しているときに、タブのタイトル/名前を変更するにはどうすればよいですか?
基本的には、現在のタブフォームに入る必要があります。
私は小さなプロジェクト(webbrowser)でWeifenLuoのDockPanelSuiteを使用しており、タブを作成して各タブ内のwebbrowser要素をナビゲートできるようになりました。
しかし、ページが別のサイトに移動しているときに、タブのタイトル/名前を変更するにはどうすればよいですか?
基本的には、現在のタブフォームに入る必要があります。
DockPanelのActiveContent
メソッドを使用して、現在のタブを取得できます。例えば:
Form myForm = myDockPanel.ActiveContent();
myForm.TabText = "Stack Overflow";
DockPanel.ActiveDocument
DockPanel.ActivePane
また、便利な場合もあります。
これに数週間取り組んだ後(今までは:Pではありません)、これは現在不可能であると言わざるを得ません。
以下を管理することにより、独自の管理を行うことができます(ドキュメントフォームが特定のクラスであると想定)。
「FormClosing」および「Activated」イベント
「アクティブ化」は、独自の「アクティブ」ドキュメントを「これ」に設定します。'FormClosing'は、独自の「アクティブな」ドキュメントをnullに設定します。
FormClosingは、最後のドキュメントを閉じている場合をキャッチするためのものです。アクティブ化とは、新しいドキュメントが作成されてアクティブウィンドウになったときなど、他のすべてを管理するものです。
静的グローバルを使用してフォーカスを管理できます。次に、他の場所からアクセスします。
public partial class MyDocument : DockContent
{
public static MyDocument ActiveDocument { get; private set; }
どのドキュメントがアクティブであるかを確認し、アクティブなタブを自動的にリセットするいくつかのUI要素を変更した後、そのドキュメントを再びアクティブに設定する機能が必要だったので、こことDockPanel FAQの一部を使用して、この問題への答え:
public string GetActive()
{ //Verify if forms that dock in main window are already open
foreach (DockContent form in dockMain.Contents)
{
if (form.DockHandler.Pane.ActiveContent.DockHandler.Form.Name.ToString() == form.Name.ToString())
{
string formName = form.Name.ToString();
return formName;
}
}
return null;
}
そして、他のメソッドで次を呼び出します。
string activeForm = GetActive();