2010-11-01 197 views
0

我有一个从控件派生出来的自定义控件,它被动态添加到窗体中。该控件在“位置”中可以具有负值,并且默认情况下是相对于左上角绘制的。如何在WinForms相对位置设置子控件的位置?

我怎样才能让控件具有负坐标并且相对于右下角绘制例如?

回答

0

我不确定你可以使用Location属性来完成它,而不需要额外的编码。 但是(1)你可以将它的“Anchor”属性设置为Right和Bottom而不是Top和Left。然后,每次调整窗体大小时,它都会停留在相对于包含面板(窗体)的右下角的相同位置。然后,(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是相对于右下角的位置。锚点确保它保持在调整大小。

1

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

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

对于实际的问题:

  1. 为什么?
  2. 不,你不能。
相关问题