通过循环添加控件是可能的吗?
本文关键字:循环 添加 控件 | 更新日期: 2023-09-27 18:17:38
是否可以通过循环添加控件到控件?难点在于名称:它在每个循环中都是相同的,所以我只得到一个名为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);
}
首先,这是可能的。你能做的就是像这样设置Name
hu.Name = string.Format("Border_{0}", i);
也许不是在边框的情况下,但例如一个按钮。我怎么才能事件中负责控件的数据,因为您绑定了一个事件到多个控件。通常使用Control。标记属性以添加额外的数据并在事件中使用它们。例如:
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"
}
请注意,保存您的实例的变量的名称,在您的情况下"hu",是不一样的Name
属性的控件。
在您的代码中,您没有创建几个名为"hu"的控件。您创建了几个未命名的控件,本地变量的名称无关紧要。这样做应该是完全没问题的,除非你需要名字。如果需要,可以为每个控件创建一个惟一的名称。