我有一個從控件派生出來的自定義控件,它被動態添加到窗體中。該控件在「位置」中可以具有負值,並且默認情況下是相對於左上角繪製的。如何在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