3

「自動非表示」ドックをプログラムで表示するのに問題があります。

次の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.

        }
    }
}
4

1 に答える 1

5

非表示の自動非表示コンテンツを表示するには、アクティブな自動コンテンツを直接設定できます。

dockPanel.ActiveAutoHideContent = dc;

経由でコンテンツをアクティブ化できないことShow()が、導入されたバグであるかどうかは私には明らかではありません. 時間があれば、提供したコードをバージョン2.5.0に対して実行して、Show() が期待どおりにコンテンツをアクティブ化するかどうかを確認していただけますか?

于 2012-12-12T17:02:44.293 に答える