2011-07-19 78 views
1

我不知道如何去這樣做的東西像這樣的控制:填充表單基於int值

我需要創建一個表單與基於代表的按鈕數的整數值按鈕的具體數量然後給他們自己特定的名字,這樣每個人都可以擁有自己獨特的事件處理程序。

我能想到的一個實際例子就是Windows登錄屏幕,其中創建的控件數量基於用戶數量以及是否存在Guest帳戶。你覺得他們如何編程?

謝謝。

回答

1
for (int i = 0; i < 5; i++) 
{ 
    Button newButton = new Button(); 
    newButton.Name = "button" + i.ToString(); 
    newButton.Text = "Button #" + i.ToString(); 
    newButton.Location = new Point(32, i * 32); 
    newButton.Click += new EventHandler(button1_Click); 
    this.Controls.Add(newButton); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (((Button)sender).Name == "button0") 
    MessageBox.Show("Button 0"); 
    else if (((Button)sender).Name == "button1") 
    MessageBox.Show("Button 1"); 
} 
+0

每個按鈕如何定製?使用newButton.Text =「foobar」會改變每個按鈕不是嗎? –

+0

@Jared如何確定所需按鈕的數量,您可能應該有相應的名稱列表等。 – LarsTech

+0

謝謝。很好的答案。 –

0

不知何故,你必須定義所有按鈕的名稱。我建議你創建一個新的字符串數組,然後在裏面寫下按鈕名稱,然後在按鈕創建循環中使用它們:

//do the same length as the for loop below: 
string[] buttonNames = { "button1", "button2", "button3", "button4", "button5" }; 

for (int i = 0; i < buttonNames.Lenght; i++) 
{ 
    Button newButton = new Button(); 
    newButton.Name = "button" + i.ToString(); 
    newButton.Text = buttonNames[i]; //each button will now get its own name from array 
    newButton.Location = new Point(32, i * 32); 
    newbutton.Size = new Size(25,100); //maybe you can set different sizes too (especially for X axes) 
    newButton.Click += new EventHandler(buttons_Click); 
    this.Controls.Add(newButton); 
} 


private void buttons_Click(object sender, EventArgs e) 
{ 
    Button btn = sender as Button 
    MessageBox.Show("You clicked button: " + btn.Text + "."); 
}