如何在面板 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)在数字面板上,尽管属性边距。那么,为什么所有这些按钮不自动向不同的方向"推动"呢?怎么做呢?

如何在面板 c# 上自动定位按钮

您是否尝试过使用 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]);                
}