2011-12-13 51 views
1

是否可以通過循環將控件添加到控件?困難在於名字:它是在每個循環一樣,所以我得到的只有一個名爲hu,而不是10一個控制如何修改代碼即可獲得10個Border S'通過循環添加控件 - 有可能嗎?

for (int i = 0; i < 10; i++) 
{ 
    Border hu = new Border(); 
    hu.Width = 10; 
    hu.Height = 10; 
    hu.Margin = new Thickness(10 * i); 
    hu.Background = (Brush) typeof(Brushes).GetProperty(Felder[i]).GetValue(null, null); 
    mastergrid.Children.Add(hu); 
} 
+0

我把它這是WPF?添加。 – Ryan 2011-12-13 17:52:04

+0

您在發佈的代碼中遇到什麼錯誤? – dthorpe 2011-12-13 17:54:13

回答

3

首先,是的,這是可能的。你可以做的是設置名稱這樣

hu.Name = string.Format("Border_{0}", i); 

也許不是在邊境的情況,但是例如按鈕。我怎樣才能 是負責事件的控制數據,因爲你 一個事件綁定到多個控件。通常使用Control.Tag屬性來添加額外的 數據並在事件中使用它們。例如:

public MainWindow() 
{ 
    InitializeComponent(); 

    for (int i = 0; i < 10; i++) 
    { 
     Border hu = new Border(); 
     hu.Width = 10; 
     hu.Height = 10; 
     hu.Margin = new Thickness(10 * i); 
     hu.Tag = anyObject; 
     hu.MouseDown += new MouseButtonEventHandler(hu_MouseDown); 
    } 
} 

void hu_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Border b = (Border)sender; 
    // b.Tag contains your "anyObject" 
} 

更新

注意保存您的實例,你的情況「胡」的變量的名稱,是不一樣的你控制的Name屬性。

0

在你的代碼,你不創建一個名爲「胡」幾個控件。你創建了幾個未命名的控件,局部變量的名稱並不重要。這樣做應該是完全正常的,除非你需要這個名字。如果你這樣做,你可以爲每個控件創建一個獨特的名稱。