我有一个从控件派生出来的自定义控件,它被动态添加到窗体中。该控件在“位置”中可以具有负值,并且默认情况下是相对于左上角绘制的。如何在WinForms相对位置设置子控件的位置?
我怎样才能让控件具有负坐标并且相对于右下角绘制例如?
我有一个从控件派生出来的自定义控件,它被动态添加到窗体中。该控件在“位置”中可以具有负值,并且默认情况下是相对于左上角绘制的。如何在WinForms相对位置设置子控件的位置?
我怎样才能让控件具有负坐标并且相对于右下角绘制例如?
我不确定你可以使用Location属性来完成它,而不需要额外的编码。 但是(1)你可以将它的“Anchor”属性设置为Right和Bottom而不是Top和Left。然后,每次调整窗体大小时,它都会停留在相对于包含面板(窗体)的右下角的相同位置。然后,(2)可以将您的左上角的位置设置为超出可见区域的值......因此,每次调整窗体(或面板)时,控件都将保持在可见区域外。
希望它有帮助。
你可以做类似
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是相对于右下角的位置。锚点确保它保持在调整大小。
问题标题和问题提出了两个不同的问题。
对于标题:是的,你可以做相对位置,但是你需要使用嵌套的布局面板,比如TableLayoutPanel和FlowLayoutPanel。他们应该能够做你想做的事情的大部分,如果不是全部的话。
对于实际的问题:
我做了小的类来管理位置和大小取决于容器的大小:
http://www.codeproject.com/Tips/492814/Relative-design-components-on-WinForm
谢谢,这看起来很有希望。我会在我的项目中测试它。 – Gamadril 2012-11-15 15:03:57