1

我有几个按钮要添加到表单上。在代码中,我设置了一些按钮属性:

    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++;
    }
}

在 MainForm.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]);                
        }

因此,当我启动一个程序时,我会在一个地方看到我的所有按钮:digitPanel 上的 (0;0) 尽管属性 Margin。那么,为什么所有这些按钮不自动向不同方向“推动”对方呢?以及如何制作?

4

3 回答 3

2

您是否尝试过使用FlowLayout 面板

此外,此视频可能会有所帮助: Windows 窗体控件第 5 课:如何使用 FlowLayout 面板

于 2013-09-16T10:13:32.203 回答
2

这不是控件在 c# 中的工作方式。我猜你在 java 上编程了一下,因为 java 中的布局很有效,但是在 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]);                
    }

您必须通过尝试找出位置参数

于 2013-09-16T10:07:59.817 回答
0

您需要定义 Left 和 Top 然后在每次循环以正确定位按钮时添加按钮高度或宽度,即

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]);                
}
于 2013-09-16T10:12:24.617 回答