我有一个面板,我试图将控件集中在其中。但显然,当面板停靠在控件的边缘时,面板不喜欢填充。这是我的面板的当前代码:
buttonPanel = new Panel();
buttonPanel.Width = 300;
buttonPanel.Height = 50;
buttonPanel.Dock = DockStyle.Bottom;
buttonPanel.Padding = new Padding((this.ClientSize.Width - buttonPanel.Width) / 2, 0,
(this.ClientSize.Width - buttonPanel.Width) / 2, 0);
buttonPanel.BackColor = Color.Transparent;
this.Controls.Add(buttonPanel);
我在面板内放置了一个按钮。我对上述代码的期望是,控件被放置在一个300宽的矩形的左边。#34;以小组为中心。但是按钮位于最左侧,就好像忽略了填充:
如何将按钮集合置于表单中心?
答案 0 :(得分:2)
设计时间方法
在设计时,将按钮放入容器中并选择按钮。然后,从布局工具栏中使用水平居中和垂直居中,将按钮置于面板中央。之后,转到按钮属性并从Anchor属性中删除每个锚点。
编码方法
Panel panel = new Panel();
panel.Size = new Size(300, 100);
panel.Dock = DockStyle.Bottom;
Button button = new Button();
button.Size = new Size(70, 25);
button.Location = new Point((panel.Width - button.Width) / 2, (panel.Height - button.Height) / 2);
button.Anchor = AnchorStyles.None;
panel.Controls.Add(button);
this.Controls.Add(panel);
答案 1 :(得分:1)
您必须通过设置按钮的位置而不是面板的填充来对齐面板内的按钮:
button1.Left = (int)(panel1.Width * 0.5f - button1.Width * 0.5f);
button1.Top = (int)(panel1.Height * 0.5f - button1.Height * 0.5f);
或
button1.Location = new Point()
{
X = panel1.Width / 2 - button1.Width / 2,
Y = panel1.Height / 2 - button1.Height / 2
};
结果是一样的。
如果您覆盖OnResize
方法,当您更改表单大小时,按钮也将保持居中:
protected override void OnResize(EventArgs e)
{
button1.Location = new Point()
{
X = panel1.Width / 2 - button1.Width / 2,
Y = panel1.Height / 2 - button1.Height / 2
};
base.OnResize(e);
}