调整DevExpress Docking Panel内的内容大小

时间:2012-05-28 23:19:19

标签: c# resize devexpress docking dockpanel

我正在尝试使用Devexpress Docking管理器和可停靠面板向窗口添加三个面板。以下是目前的结果:

enter image description here

这三个面板的放置和大小是我想要的,但是当我调整窗口大小时,它们的内容将无法正确调整大小。第一个图像通过Picturebox指示无法填充窗口。我目前对此进行规范的尝试是:( Panel3指的是一个包含pictureBox1的面板,而该面板又由dp3包含。)

  void dp3_SizeChanged(object sender, EventArgs e)
  {
     panel3.Size = panel3.Parent.Size;
     pictureBox1.Width = dp3.Width;
     pictureBox1.Height = dp3.Height;
  }

控制窗口也是如此。除非窗口过大,否则我的控件不会出现。

enter image description here

控件包含在4个单独的面板中,这些面板本身包含在可停靠的窗口中。

如何使东西看起来正确的尺寸和位置,以及尺寸和尺寸?

1 个答案:

答案 0 :(得分:3)

  

浏览这篇DevX文章 - Designing Resizable Windows Forms in Visual Studio .NET - 2,   我最喜欢理解Winforms中的布局。

您应该在表单中的控件上设置AnchorDock属性。

Anchor属性控制控件的哪些边缘“绑定”或“绑定”到其窗体的相应边缘。
例如,如果将Anchor设置为Bottom,控件的下边缘与其父级底部之间的距离将不会更改,因此在调整窗体大小时控件将向下移动。
如果您将Anchor设置为Top | Bottom,则在调整表单大小时,控件将垂直调整大小。

要使用表单调整控件大小,请将Anchor设置为所有四个边,或将Dock设置为Fill

您可以将控件的Dock属性设置为Fill。这将导致控件填充它的父容器。

您可能仍需要编写一些代码来处理子控件的布局。您可以通过处理Resize事件或使用支持调整大小的容器(例如FlowLayoutPanelTableLayoutPanel)来执行此操作。

使用您的Control的Anchor属性。您可能需要将其设置为所有方面Top, Bottom, Left, Right,,如果您希望根据父方控制在所有四个方向上调整大小


如果你想Maintain the controls Aspect Ratio on Resize,你需要以某种方式存储宽高比,无论是在设计时你知道什么,或者你只是想在InitializeComponent之后在窗体的构造函数中计算它()。在表单的Resize事件中,