1

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

在此处输入图像描述

这三个面板按我想要的方式放置和调整大小,但是当我调整窗口大小时,它们的内容不会正确调整大小。第一个图像通过无法填充窗口的图片框来表明这一点。我目前对此进行规范的尝试是:(Panel3 是指包含 pictureBox1 的面板。而该面板又包含在 dp3 中。)

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

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

在此处输入图像描述

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

在停靠和调整大小时,如何使事物显示正确的大小和位置?

4

1 回答 1

3

阅读这篇 DevX 文章 -在 Visual Studio .NET - 2中设计可调整大小的 Windows 窗体,我最喜欢这篇文章来了解 .NET 中的布局Winforms

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

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

要使用窗体调整控件大小,请将 设置Anchor为所有四个边,或设置DockFill

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

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

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


如果要在 Resize 上保持控件 Aspect Ratio,则需要以某种方式存储纵横比,无论它是在设计时为您所知的,还是您只想在 InitializeComponent( )。在表单的 Resize 事件中,

于 2012-05-29T05:22:38.883 回答