2017-10-13 5 views
0

私はforループで4つのボタンを作成しています。特定のボタンをターゲットにしたいと、3という名前のボタンを押して、それを見えないようにします。どのように私はこれを行うことができるかについて誰もが考えている?forループで作成した特定のボタンをどのようにターゲットできますか?

for (int j = 0; j < 4; j++) 
      { 
       Button b = new Button(); 
       b.Left = x; 
       b.Top = y; 
       b.Width = WIDTH; 
       b.Height = HEIGHT; 
       b.Name = counter.ToString(); 

       counter++; 
       x += VGAP + HEIGHT; 
       this.Controls.Add(b); 
      } 
+0

'this.Controls'を繰り返し、' 3 "'という名前の子を確認してください。 –

答えて

0

あなたは、アレイ(または他のコレクション)のボタンを保存することができます:

 Button[] buttons = new Button[4]; 
     for (int j = 0; j < 4; j++) 
     { 
      Button b = new Button(); 
      b.Left = x; 
      b.Top = y; 
      b.Width = WIDTH; 
      b.Height = HEIGHT; 
      b.Name = counter.ToString(); 

      counter++; 
      x += VGAP + HEIGHT; 
      this.Controls.Add(b); 
      buttons[i] = b; 
     } 

     //.... 
     button[3].Visible = false; 
+0

ああ、私はdidntのことを信じていないと思うそのhahaのおかげで^^ – Kris

0

ボタンが動的に作成されているので、あなたはNameプロパティを直接あなたのコードでそれらを参照することはできません。
作成したボタンをリストに保存できます。そして、指定されたインデックスで目的のボタンで何かを行います。以下のコードを参照してください:

public partial class Form1 : Form 
{ 
    int x, y; 
    private const int WIDTH = 50; 
    private const int HEIGHT = 50; 
    private const int VGAP = 5; 
    List<Button> lstButtons = new List<Button>(); 


    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     int counter = 1; 
     for (int j = 0; j < 4; j++) 
     { 
      Button b = new Button(); 
      b.Left = x; 
      b.Top = y; 
      b.Width = WIDTH; 
      b.Height = HEIGHT; 
      b.Name = counter.ToString(); 

      counter++; 
      x += VGAP + HEIGHT; 
      this.Controls.Add(b); 
      lstButtons.Add(b); 

     } 

     DosomethingWithButton(3); 
    } 

    private void DosomethingWithButton(int index) 
    { 
     lstButtons[index].Text = "Hello"; 
    } 
} 
関連する問題