我有一个从Control派生的自定义控件,它会动态添加到表单中。控件在“位置”中可以为负值,默认情况下相对于左上角绘制。
例如,如何让控件具有负坐标并相对于右下角绘制?
答案 0 :(得分:1)
问题标题和问题提出了两个不同的问题。
对于标题:是的,您可以进行相对位置,但您需要使用嵌套布局面板,如TableLayoutPanel和FlowLayoutPanel。他们应该能够做大部分(如果不是全部)你想做的事情。
对于实际问题:
答案 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