DockPanelSuite 的 DockState 和 AutoHide

Loc*_*ith 5 c# dockpanel-suite winforms

使用 DockState 和 AutoHide,我正在寻找以下内容:

  1. 查看 DockContent 是否处于自动隐藏模式
  2. 能够在“常规”和自动隐藏模式之间切换。
  3. 当自动隐藏停靠栏进入视图时触发事件。
  4. 当自动隐藏停靠点“离开”并且现在停靠回其选项卡时触发事件。

回答维基:

  1. IsAutoHide - 获取:

    private WeifenLuo.WinFormsUI.Docking.DockState[] AutoHideStates = new WeifenLuo.WinFormsUI.Docking.DockState[] {
        WeifenLuo.WinFormsUI.Docking.DockState.DockBottomAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockRightAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockTopAutoHide };
    
    public bool IsAutoHide { get { return AutoHideStates.Contains(DockContent.DockState); } }
    
    Run Code Online (Sandbox Code Playgroud)
  2. IsAutoHide - 设置:还没有代码 - 基本上迭代模式或使用可互换模式的字典(即 DockBottomAutoHide 到 DockBottom)

  3. 我不知道,但这看起来很有趣,可能有这个想法。

  4. 我不知道。

rok*_*ken 2

1 是实现这一目标的好方法。该库有一个内部方法,DockHelper.IsDockStateAutoHide()它基本上做同样的事情。这实际上应该成为公共扩展方法并作为库的一部分包含在内。

2 你的解决方案很好。

3 和 4 可能最好作为以下位置的新事件实现DockPanelActiveAutoHideContentChanged。然后,您可以自行跟踪最后的自动隐藏内容,当引发事件时,您知道如果新值不为空,则发生#3;如果最后一个已知值不为空,则发生#4。

请随时在GitHub上提出添加活动的请求。