2009-10-21 204 views
4

我增加了一些控制,以我的形式,改變了Anchor屬性我怎麼會想到這個工作,但是當我調整窗體在運行時,控制停留在同一個地方。C#Anchor屬性似乎不工作

例如,我有一個表格右下角的兩個按鈕 - 他們是在表格上,沒有容器之類的東西。錨點=下,右。 FormBorderStyle =可調。但是當我在運行時拖動窗體的大小時,按鈕不會移動。

我錯過了什麼嗎?

C#2005

+0

過去總是爲我工作,所以我猜想你做錯了什麼。你可以發佈一個代碼示例(檢查designer.cs文件) - 或者可能會顯示問題的屏幕截圖。 – 2009-10-21 10:53:40

+0

添加一個新窗體,添加一個按鈕,並將'Anchor'設置爲'Bottom,Right'。如果這真的起作用,那就意味着在你的原始形式中完成事情的方式出現了問題 - 請參閱其他人的解答以找出答案。如果新表格不起作用,我不知道有什麼問題... – awe 2009-10-21 11:44:39

回答

3

什麼是Dock屬性設置爲?這可以否定錨定屬性。

+0

對於按鈕,對不對?它被設置爲「無」 – flamey 2009-10-21 11:15:21

10

另一種可能性是,你不小心放在你的按鈕不能直接在表格上。相反,你把它們放在一些容器中(例如panel,tableLayoutPanel等),並且這個容器沒有設置其錨定值或對接值是正確的。

只是要絕對確定您應該看看designer.cs並檢查您的按鈕是否直接添加到表格中,或者是否將它們添加到任何其他控件列表(例如panel.Controls.Add())中。

+11

如果您想要表單上所有控件的分層概覽,只需打開「文檔大綱」面板即可。 在設計模式下,轉到查看 - >其他窗口 - >文檔提綱 – Mez 2009-10-21 12:35:20

+1

剛剛學到了一些新東西......我不知道'文檔大綱',但我給出了很好的分層概述,並且還支持拖放! – Oliver 2009-10-26 11:11:41

+0

我只是開始瞭解發生了什麼以及如何解決它,但FlowLayoutPanels似乎真的搞亂了錨定行爲。這裏有一些信息,不知道它是多麼當前是https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-anchor-and-dock-child-controls-in -a-flowlayoutpanel-control – Toadfish 2017-08-28 01:38:52

4

此外,如果你有自動大小屬性設置它會造成麻煩。

2

我知道這是一箇舊帖子,但我想盡力提供幫助。

我的問題是,我是加入到我的面板的形式時,父面板有它的大小改變沒有自動調整其大小。

的問題是,我是這樣做的:

form.WindowState = FormWindowState.Maximized; // <-- source of the problem 
form.AutoSize = true; //this causes the form to grow only. Don't set it if you want to resize automatically using AnchorStyles, as I did below. 
form.FormBorderStyle = FormBorderStyle.Sizable; //I think this is not necessary to solve the problem, but I have left it there just in case :-) 
panel1.Controls.Add(form); 
form.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right))); 
form.Dock = DockStyle.Fill; //this provides the initial size adjust to parent' size. 
form.Visible = true; 

來解決,我只是評論的第一行//form.WindowState = FormWindowState.Maximized;和一切工作就像一個魅力。

0

我有完全相同的問題。

現狀:

TableLayoutPanel有一排設置爲autosize。在這一行中,錨定Right,Bottom不起作用。 刪除autoSize並將其放在一個固定的高度解決了問題,由user428955規定。

1

我在VS11測試版中遇到同樣的問題。我多次使用錨點,並且它一直運行正常,但現在我無法理解它們發生了什麼,而且不僅僅是 - 碼頭填充不起作用! (不使用自動尺寸或底座屬性)

P.S. (40分鐘後) 現在看起來像我發現問題:我有調整大小事件偵聽器PictureBox和我創建新的圖像爲新的圖片框大小在onResize處理程序。當我刪除新的圖像創建一切正常!

現在我用SizeChanged事件,在這個事件處理程序創建新的形象。所以我認爲我不應該改變發件人對象,直到調整大小完成。

0

我的問題很簡單,
我所有的控件錨屬性設置正確,幷包含在面板內。
但我忘了將錨樣式設置爲容器面板,以便容器面板不會根據表單邊框進行展開,因爲我希望在設置容器面板的錨定屬性後,所有內容都按預期工作。