我正在尝试使用Devexpress Docking管理器和可停靠面板向窗口添加三个面板。以下是目前的结果:
这三个面板的放置和大小是我想要的,但是当我调整窗口大小时,它们的内容将无法正确调整大小。第一个图像通过Picturebox指示无法填充窗口。我目前对此进行规范的尝试是:( Panel3指的是一个包含pictureBox1的面板,而该面板又由dp3包含。)
void dp3_SizeChanged(object sender, EventArgs e)
{
panel3.Size = panel3.Parent.Size;
pictureBox1.Width = dp3.Width;
pictureBox1.Height = dp3.Height;
}
控制窗口也是如此。除非窗口过大,否则我的控件不会出现。
控件包含在4个单独的面板中,这些面板本身包含在可停靠的窗口中。
如何使东西看起来正确的尺寸和位置,以及尺寸和尺寸?
答案 0 :(得分:3)
浏览这篇DevX文章 - Designing Resizable Windows Forms in Visual Studio .NET - 2, 我最喜欢理解
Winforms
中的布局。
您应该在表单中的控件上设置Anchor
和Dock
属性。
Anchor
属性控制控件的哪些边缘“绑定”或“绑定”到其窗体的相应边缘。
例如,如果将Anchor
设置为Bottom
,控件的下边缘与其父级底部之间的距离将不会更改,因此在调整窗体大小时控件将向下移动。
如果您将Anchor
设置为Top | Bottom
,则在调整表单大小时,控件将垂直调整大小。
要使用表单调整控件大小,请将Anchor
设置为所有四个边,或将Dock
设置为Fill
。
您可以将控件的Dock
属性设置为Fill
。这将导致控件填充它的父容器。
您可能仍需要编写一些代码来处理子控件的布局。您可以通过处理Resize
事件或使用支持调整大小的容器(例如FlowLayoutPanel
或TableLayoutPanel
)来执行此操作。
使用您的Control的Anchor
属性。您可能需要将其设置为所有方面Top, Bottom, Left, Right,
,如果您希望根据父方控制在所有四个方向上调整大小
如果你想Maintain the controls Aspect Ratio on Resize,你需要以某种方式存储宽高比,无论是在设计时你知道什么,或者你只是想在InitializeComponent之后在窗体的构造函数中计算它()。在表单的Resize事件中,