テーマ

用意されたテーマを適用することで、全体の外観を変更できます。

テーマの適用

既定のテーマはVisual Studioのバージョンに合わせて用意されており、たとえばVisual Studio 2015のそれはNuGet Gallery | DockPanelSuite.ThemeVS2015にあるようにNuGetからダウンロードできます。そしてDockPanelのThemeプロパティに

dockPanel.Theme = new WeifenLuo.WinFormsUI.Docking.VS2015BlueTheme();

のように指定することで適用できます。

なおテーマを指定しない場合には、Visual Studio 2005のそれが適用されます。Visual Studio 2005 Theme - Existing Themes — dockpanelsuite 3.0 documentation

v3.1以降は既定のテーマがDefaultThemeに変更されており、テーマを明示しないと「DockPanel.Theme must be set to a valid theme.」としてArgumentExceptionが投げられます。DockPanel showing content not working unless setting a theme · Issue #670 · dockpanelsuite/dockpanelsuite · GitHub

メニューなどへの適用

メニューなどのToolStripを継承したクラスもDockPanelのテーマに合わせるならば、適用するテーマのApplyTo()にそれを渡します。

ThemeBase themeBase = new VS2015BlueTheme();
themeBase.ApplyTo(menuStrip1);
themeBase.ApplyTo(statusStrip1);

dockPanel.Theme = themeBase;

テーマの変更

テーマを適用するときはDockPanel上の区画はすべて閉じられている必要があるため、レイアウトを保存してからテーマを適用し、レイアウトを復元します。

using (MemoryStream memoryStream = new MemoryStream())
{
    // レイアウトを保存する
    dockPanel.SaveAsXml(memoryStream, Encoding.UTF8);

    // すべてのコンテンツを閉じる
    CloseAllContents();

    // 新しいテーマを適用する
    dockPanel.Theme = newTheme;

    // レイアウトを復元する
    DeserializeDockContent deserializeDockContent = new DeserializeDockContent(GetDockContent);
    memoryStream.Seek(0, SeekOrigin.Begin);
    dockPanel.LoadFromXml(memoryStream, deserializeDockContent);
}
DockSample.MainForm.SetSchema()

フォントの設定

フォントは自動で隠れるウィンドウとそれ以外の、2つにそれぞれ設定できます。

// The skin used to display the auto hide strips and tabs.
dockPanel.Theme.Skin.AutoHideStripSkin.TextFont = newFont;

// The skin used to display the Document and ToolWindow style DockStrips and Tabs.
dockPanel.Theme.Skin.DockPaneStripSkin.TextFont = newFont;