代码之家  ›  专栏  ›  技术社区  ›  Razzupaltuff

卫芬洛船坞面板套件:使用设计尺寸的浮窗?

  •  3
  • Razzupaltuff  · 技术社区  · 15 年前

    如何使浮动窗口使用其设计尺寸(而不是Dock Panel Suite的默认尺寸)和Weifenlo Dock Panel Suite?

    提示:我在sf.net的Dock面板套件论坛上尝试了一个建议,但似乎不起作用。

    4 回复  |  直到 11 年前
        1
  •  1
  •   Timothy Pratley    15 年前

    这对我很有用:

    var topLeft = dockPanel1.Location;
    topLeft.X += (dockPanel1.Size.Width / 2 - newForm.Size.Width / 2);
    topLeft.Y += (dockPanel1.Size.Height / 2 - newForm.Size.Height / 2);
    newForm.Show(dockPanel1, new Rectangle(topLeft, newForm.Size));
    
        2
  •  4
  •   Chris    13 年前

    当我自己寻找答案的时候,我偶然发现了这个问题,并且发现提摩太的答案不适合我。

    问题是,他概述的方法在默认情况下也浮动了窗口。(也许这是版本差异)

    我用另一种方法解决了这个问题。我已经创建了一个从DockContent继承的基类,我的所有文档窗口都将从该类继承。然后,我为处理此问题的show方法创建了另一个重载(我使用DockPanelSuite源代码来帮助构建此方法)。

    public void Show(DockPanel dockPanel, DockState dockState, Rectangle floatWindowBounds)
    {
        Show(dockPanel, dockState); //shows the panel like normal
    
        //now for the part to initialize the float pane and size
        if (DockHandler.FloatPane == null)
        {
            DockHandler.FloatPane = dockPanel.DockPaneFactory.CreateDockPane(this, DockState.Float, false);
            DockHandler.FloatPane.FloatWindow.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
        }
        DockHandler.FloatPane.FloatWindow.Bounds = floatWindowBounds;
    }
    
        3
  •  3
  •   HC Alberts    13 年前

    当从DockContent派生CForm时, 我在MDIContainerWindow中有一个方法,它看起来像这样

     public void ShowForm(CForm pForm)
        {
            pForm.MdiParent = this;
    
            Size lS = pForm.Size;
            dockPanel.DefaultFloatWindowSize = lS;
    
            pForm.Show(dockPanel);
            pForm.VisibleState = DockState.Float;
    
        }
    
        4
  •  1
  •   John Y    11 年前

    这对我有效(在VB中):

    Dim MyForm As New MyForm
    MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size))
    MyForm.DockState = DockState.DockRight