「自動非表示」ドックをプログラムで表示するのに問題があります。
次のSO Question.Show()
は、トリックを実行する必要があることを示唆していましたが、ネット上で答えを見つけることができませんでした
コードの最新のNuGet バージョンでこれを試しました。
私のテストコードは以下です。
誰でもそれを行う方法を知っていますか? または私が間違っていることは何ですか?
更新:どうやらこれは 2.7.0 のバグのようです。私はプロジェクトで問題をオープンしました。@roken の回答は優れた回避策であるため、以下のコードを更新して反映させました。
私のテストコード
簡単な Visual Studio Windows フォーム アプリケーションを作成し、メイン フォームのソース ファイルの内容を次のコードに置き換えます。
using System;
using System.Windows.Forms;
using dps = WeifenLuo.WinFormsUI.Docking;
namespace testDockPanel
{
public partial class Form1 : Form
{
private dps.DockPanel dockPanel;
private dps.DockContent dc;
private Control innerCtrl;
public Form1()
{
InitializeComponent();
dockPanel = new dps.DockPanel();
dockPanel.Dock = DockStyle.Fill;
dockPanel.DocumentStyle = dps.DocumentStyle.DockingWindow;
toolStripContainer1.ContentPanel.Controls.Add(dockPanel);
dc = new dps.DockContent();
dc.DockPanel = dockPanel;
dc.DockState = dps.DockState.DockRightAutoHide;
innerCtrl = new WebBrowser() { Dock = DockStyle.Fill };
dc.Controls.Add( innerCtrl );
これは、機能しなかったコードの一部です。
// This SHOULD show the autohide-dock, but NOTHING happens.
dc.Show();
@roken の提案に置き換えたところ、動作するようになりました。
dockPanel.ActiveAutoHideContent = dc;
innerCtrl.Focus(); // This is required otherwise it will autohide quickly.
}
}
}