почему моя панель не показывает все мои кнопки в моем приложении c #? - PullRequest
1 голос
/ 04 июня 2010

моя панель в приложении Windows Form не содержит всех кнопок, к которым я ее просил. Он показывает только 1 кнопку, вот код

 private void AddAlphaButtons()
        {
            char alphaStart = Char.Parse("A");
            char alphaEnd = Char.Parse("Z");

        for (char i = alphaStart; i <= alphaEnd; i++)
        {
            string anchorLetter = i.ToString();
            Button Buttonx = new Button();
            Buttonx.Name = "button " + anchorLetter;
            Buttonx.Text = anchorLetter;
            Buttonx.BackColor = Color.DarkSlateBlue;
            Buttonx.ForeColor = Color.GreenYellow;
            Buttonx.Width = 30;
            Buttonx.Height = 30;

            this.panelButtons.Controls.Add(Buttonx);

            //Buttonx.Click += new System.EventHandler(this.MyButton_Click);
        }
    }

Ответы [ 2 ]

6 голосов
/ 04 июня 2010

Разве они не собираются находиться на одной и той же позиции?

Попробуйте установить Buttonx.Location = new Point(100, 200);

(но с разными точками для разных кнопок)

0 голосов
/ 04 июня 2010

Вы можете использовать FlowLayoutPanel, который позаботится о макете для вас, или вам нужно отслеживать местоположения самостоятельно, или который может выглядеть примерно так:

private void AddAlphaButtons()
{
    char alphaStart = Char.Parse("A");
    char alphaEnd = Char.Parse("Z");   

    int x = 0;  // used for location info
    int y = 0;  // used for location info

    for (char i = alphaStart; i <= alphaEnd; i++)
    {
        string anchorLetter = i.ToString();
        Button Buttonx = new Button();
        Buttonx.Name = "button " + anchorLetter;
        Buttonx.Text = anchorLetter;
        Buttonx.BackColor = Color.DarkSlateBlue;
        Buttonx.ForeColor = Color.GreenYellow;
        Buttonx.Width = 30;
        Buttonx.Height = 30;

        // set button location
        Buttonx.Location = new Point(x, y);

        x+=30;
        if(x > panel1.Width - 30)
        { 
            x = 30;
            y+=30;
        }

        this.panelButtons.Controls.Add(Buttonx);

        //Buttonx.Click += new System.EventHandler(this.MyButton_Click);
     }
}
...