ドッキング レイアウトの保存と復元

ウィンドウのサイズやドッキング位置のレイアウト情報をXMLファイルで保存し、次回の起動時に復元することができます。

保存

DockPanelクラスのSaveAsXmlメソッドで書き込みます。

public void SaveAsXml(
    string filename  // ファイル名
    );

ウィンドウの名称設定

ファイルへの保存時には、複数のウィンドウを一意に識別するために、個々のウィンドウにはそのクラス名と同一の名称が付けられます。しかしGetPersistStringメソッドをオーバーライドすることで、これを任意の名称に変更できます。

これはDockContentを継承したフォーム内で定義します。

サンプルコード

protected override string GetPersistString()
{
    return "DockingWindowName1";
}

復元

DockPanelクラスのLoadFromXmlメソッドで読み込みます。引数でファイル名と、読み込み対象となるウィンドウを特定するためのメソッドを指定します。

public void LoadFromXml(
    string filename,                           // ファイル名
    DeserializeDockContent deserializeContent  //
    );

サンプルコード

using WeifenLuo.WinFormsUI.Docking;

void Foo()
{
    DeserializeDockContent deserializeDockContent
        = new DeserializeDockContent( GetDockContentFromPersistString );

    this.dockPanel.LoadFromXml( FileName, deserializeDockContent );
}

// ウィンドウの名称に対応するDockContentを返す
IDockContent GetDockContentFromPersistString( string persistString )
{
    switch( persistString )
    {
        case "DockingWindowName1":  // GetPersistStringメソッドが返すウィンドウ名称
            return this.dockingWindow1;

        case "DockingWindowName2":
            return this.dockingWindow2;
    }
    return null;
}