如何在WinForms相对中创建子控件的位置?

时间:2010-11-01 21:12:13

标签: c# controls location relative

我有一个从Control派生的自定义控件,它会动态添加到表单中。控件在“位置”中可以为负值,默认情况下相对于左上角绘制。

例如,如何让控件具有负坐标并相对于右下角绘制?

4 个答案:

答案 0 :(得分:1)

问题标题和问题提出了两个不同的问题。

对于标题:是的,您可以进行相对位置,但您需要使用嵌套布局面板,如TableLayoutPanel和FlowLayoutPanel。他们应该能够做大部分(如果不是全部)你想做的事情。

对于实际问题:

  1. 为什么?
  2. 不,你不能。

答案 1 :(得分:0)

我不确定你是否可以使用Location属性来做这件事,而不需要做很多额外的编码。 但是(1)你可以将它的“Anchor”属性设置为Right和Bottom而不是Top和Left。然后,每次调整表单大小时,它将保持在相对于包含面板的右下角(表单)的相同位置。然后(2)可以将您的位置左上角设置为这样的值,使其超出可见区域...所以每次调整窗体(或面板)的大小时 - 控件将保持在可见区域之外。

希望有所帮助。

答案 2 :(得分:0)

您可以执行类似

的操作
Point relativePos = new Point(-10, -10);
control.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
control.Location = new Point(this.ClientSize.Width - control.Width + relativePos.X, this.ClientSize.Height - control.Height + relativePos.Y);

其中相对pos是相对于右下角的位置。锚点确保它在调整大小时保持不变。

答案 3 :(得分:0)

我做了小班来管理职位和大小取决于容器大小:

http://www.codeproject.com/Tips/492814/Relative-design-components-on-WinForm