C#Anchor属性似乎不起作用

fla*_*mey 7 c# forms anchor winforms formborderstyle

我在表单中添加了一些控件并更改了Anchor属性我希望它如何工作,但是当我在运行时调整表单大小时,控件保持在同一个位置.

例如,我在表单的右下角有两个按钮 - 它们在表单上,​​没有容器或类似的东西.Anchor = Bottom,Right.FormBorderStyle =大小.但是当我在运行时拖动调整窗体大小时,按钮不会移动.

我错过了什么吗?

c#2005

Oli*_*ver 11

另一种可能性是您不小心将按钮放在表单上.而是将它们放在某个容器中(例如panel,tableLayoutPanel等),并且此容器没有将其锚定或对接值设置为正确.

只是为了绝对确定你应该看看designer.cs并检查你的按钮是按this.Controls.Add()功能直接添加到表单还是在任何其他Controls-List中添加(例如panel.Controls.Add()).

  • 如果要对表单上的所有控件进行分层概述,只需打开"文档大纲"面板即可.在设计模式下,转到视图 - >其他窗口 - >文档大纲 (11认同)

Bos*_*ick 5

另外,如果您设置了自动调整大小属性,也会造成麻烦。


Rob*_*rto 5

我知道这是一篇旧文章,但无论如何我都想尽自己的力量。

我的问题是,当父面板的大小更改时,我添加到面板中的表单没有自动调整其大小。

问题是我正在这样做:

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;
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我只评论了第一行//form.WindowState = FormWindowState.Maximized;,所有内容都像个魅力一样。


use*_*ser 4

Dock 属性设置为什么?这可以否定锚点属性。