如何在面板 c# 上自动定位按钮
本文关键字:定位 按钮 | 更新日期: 2023-09-27 18:31:23
我有几个按钮要添加到表单上。在代码中,我正在设置一些按钮属性:
class DigitButton : Button
{
private static int digitBtnTag;
public DigitButton()
: base()
{
this.Size = new Size(30, 30);
this.Tag = digitBtnTag;
this.Text = (this.Tag).ToString();
this.Margin = new Padding(2);
this.Padding = new Padding(2);
digitBtnTag++;
}
}
在主窗体中.cs我有
for (int i = 0; i < dgtBtns.Length; i++)
{
dgtBtns[i] = new DigitButton();
dgtBtns[i].Click += new EventHandler(this.digitButtonClick);
digitPanel.Controls.Add(dgtBtns[i]);
}
因此,当我启动一个程序时,我看到我所有的按钮都在一个地方:(0;0)在数字面板上,尽管属性边距。那么,为什么所有这些按钮不自动向不同的方向"推动"呢?怎么做呢?
您是否尝试过使用 FlowLayout 面板?
此外,此视频可能会有所帮助:Windows 窗体控件第 5 课:如何使用"流布局"面板
这不是
控件在 C# 中的工作方式。 我猜你在 Java 上编程了一点,因为 Jave 中的布局工作得那么好,但在 C# 中只是
for (int i = 0; i < dgtBtns.Length; i++)
{
dgtBtns[i] = new DigitButton();
dgtBtns[i].Location = new Point(50, 50 * i); // Multiplying by i makes the location shift in every loop
dgtBtns[i].Click += new EventHandler(this.digitButtonClick);
digitPanel.Controls.Add(dgtBtns[i]);
}
您必须通过尝试并查看来找出位置参数
您需要
定义左和上,然后在每次循环时添加按钮高度或宽度以正确定位按钮,即
int bTop=0;
int bLeft=0;
for (int i = 0; i < dgtBtns.Length; i++)
{
dgtBtns[i] = new DigitButton();
dgtBtns[i].Click += new EventHandler(this.digitButtonClick);
dgtBtns[i].Top = bTop;
bTop += dgtBtns[i].Height;
digitPanel.Controls.Add(dgtBtns[i]);
}