1

C# フォームにいくつかのボタンをプログラムで追加しましたが、デザイナーを介して追加したボタンのみが実際に表示されます。残りは見えないままです。この前に多くの操作を実行しています。これが原因なのではないでしょうか?

public FormView
{
    List<Button> listOfButtons = new List<Button>();
    int frame = 0;
    for (int i = 0; i < 36; i++)
    {
        listOfButtons.Add(new Button());
    }
    listOfButtons[4 * frame].Width = 92;
    listOfButtons[4 * frame].Height = 92;
    listOfButtons[4 * frame].BackColor = Color.Red;
    listOfButtons[4 * frame].BackgroundImage = System.Drawing.Image.FromFile("image.png");
    listOfButtons[4 * frame].BackgroundImageLayout = ImageLayout.Stretch;
    listOfButtons[4 * frame].ImageAlign = ContentAlignment.MiddleCenter;
    listOfButtons[4 * frame].TextAlign = ContentAlignment.TopCenter;
    listOfButtons[4 * frame].Location = new Point(1, 0);
    listOfButtons[4 * frame].Click += new EventHandler(this.button1_Click);

    listOfButtons[4 * frame + 1].Width = 92;
    listOfButtons[4 * frame + 1].Height = 92;
    listOfButtons[4 * frame + 1].BackColor = Color.Red;
    listOfButtons[4 * frame + 1].BackgroundImage = System.Drawing.Image.FromFile("image.png");
    listOfButtons[4 * frame + 1].BackgroundImageLayout = ImageLayout.Stretch;
    listOfButtons[4 * frame + 1].ImageAlign = ContentAlignment.MiddleCenter;
    listOfButtons[4 * frame + 1].TextAlign = ContentAlignment.TopCenter;
    listOfButtons[4 * frame + 1].Location = new Point(1, 99);
    listOfButtons[4 * frame + 1].Click += new EventHandler(this.button2_Click);

    listOfButtons[4 * frame + 2].Width = 92;
    listOfButtons[4 * frame + 2].Height = 92;
    listOfButtons[4 * frame + 2].BackColor = Color.Red;
    listOfButtons[4 * frame + 2].BackgroundImage = System.Drawing.Image.FromFile("image.png");
    listOfButtons[4 * frame + 2].BackgroundImageLayout = ImageLayout.Stretch;
    listOfButtons[4 * frame + 2].ImageAlign = ContentAlignment.MiddleCenter;
    listOfButtons[4 * frame + 2].TextAlign = ContentAlignment.TopCenter;
    listOfButtons[4 * frame + 2].Location = new Point(99, 0);
    listOfButtons[4 * frame + 2].Click += new EventHandler(this.button3_Click);

    listOfButtons[4 * frame + 3].Width = 92;
    listOfButtons[4 * frame + 3].Height = 92;
    listOfButtons[4 * frame + 3].BackColor = Color.Red;
    listOfButtons[4 * frame + 3].BackgroundImage = System.Drawing.Image.FromFile("image.png");
    listOfButtons[4 * frame + 3].BackgroundImageLayout = ImageLayout.Stretch;
    listOfButtons[4 * frame + 3].ImageAlign = ContentAlignment.MiddleCenter;
    listOfButtons[4 * frame + 3].TextAlign = ContentAlignment.TopCenter;
    listOfButtons[4 * frame + 3].Location = new Point(99, 99);
    listOfButtons[4 * frame + 3].Click += new EventHandler(this.button4_Click);


    listOfButtons[4 * frame].Visible = true;
    listOfButtons[4 * frame + 1].Visible = true;
    listOfButtons[4 * frame + 2].Visible = true;
    listOfButtons[4 * frame + 3].Visible = true;
    InitializeComponent();
}

何か案は?

4

3 に答える 3

3

親コントロールにボタンを追加することはありません。あなたはこのようなことをするべきです...

Form1.Controls.Add(listOfButtons[4 * frame]); // and so on...
于 2013-07-16T18:23:54.687 に答える
1

まず、コントロールが初期化されたときに、InitalizeComponent の後にこれらすべてを実行します。

次に、コントロールをフォームのコンテナーに追加します。例えば

       yourForm.Controls.Add(controlsToAdd); 

それでも表示できない場合は、ボタンがフォームの境界外にある、または他のコントロールと重なっているなど、複数の理由が考えられます。動的に追加するボタンのいずれかに、フォームの境界内の固定位置を割り当ててみてください。

于 2013-07-16T18:20:53.813 に答える
0

非デザイナー コントロールをControlsコレクション (フォームのコントロールまたは別のコントロール) に追加する必要があります。

于 2013-07-16T18:22:44.983 に答える