是否可以通过循环向控件添加控件?难点是名称:它在每个循环中都是相同的,所以我只得到一个名为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 :(得分: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"
}
<强>更新强>
请注意,保存您实例的变量的名称(在您的情况下为“hu”)与您的控件的Name
属性不同。
答案 1 :(得分:0)
在您的代码中,您不会创建名为“hu”的多个控件。您创建了几个未命名的控件,本地变量的名称无关紧要。这样做应该完全没问题,除非你需要这个名字。如果这样做,您可以为每个控件创建一个唯一的名称。