0

をクリックしたときにフォームに 4 つのボタンを作成しようとしていますbutton1が、ボタンが表示されません。なぜだめですか?

private void button1_Click(object sender, EventArgs e)
{
   Button[] b = new Button[4];
   for (int i=0; i < 4; i++)
   {
      b[i] = new Button();
      b[i].Name = "button" + i;
      b[i].Location = new Point(43, 39 + 10 * i);
      b[i].Size = new Size(158, 48);
   }
}
4

4 に答える 4

5

それらを作成しただけですが、次の方法でフォームに追加する必要もあります。this.Controls.Add(b[i]);

private void button1_Click(object sender, EventArgs e)
{
   Button[] b = new Button[4];
   for (int i=0; i < 4; i++)
   {
       b[i] = new Button();
       b[i].Name = "button" + i;
       b[i].Location = new Point(43, 39 + 10 * i);
       b[i].Size = new Size(158, 48);

       this.Controls.Add(b[i]);
   }
}
于 2013-02-28T16:56:13.323 に答える
1

これを試して:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace winFormButtons
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Button[] b = new Button[4];
            for (int i = 0; i < 4; i++)
            {
                b[i] = new Button();
                b[i].Name = "button" + i;
                b[i].Location = new Point(43, 39 + 10 * i);
                b[i].Size = new Size(158, 48);    
                b[i].Click += new EventHandler(OnClick);
                this.Controls.Add(b[i]);
            }
        }

        public void OnClick(object sender, EventArgs e)
        {    
            MessageBox.Show("Hello Handler:" + ((Button)sender).Name);    
        }
    }
}
于 2013-02-28T17:03:53.137 に答える
1

ボタンの配列を作成し、インデックスにボタンを割り当てるだけです。フォームはこれらのボタンについて何も認識していません。この時点では、整数の配列またはすべての重要なものである可能性があります。それらをフォームのコンテナーに入れる必要があります。

Controls.Add(b[i]);

これで、フォームがそれらの所有権を取得し、コンテナーが破棄されるときに破棄を管理します。

于 2013-02-28T16:57:45.637 に答える
0

フォームに を作成Panelします。コードにこの行を追加します

panel1.Controls.Add(b[i])
于 2013-02-28T16:59:38.853 に答える