我知道如何在c#中创建动态控件:
TextBlock tb = new TextBlock();
tb.Text = "This is a new textblock";
但是我如何通过代码引用这个新创建的控件? 我浏览网络寻找解决方案,并且遇到了这段代码:
TextBlock tb = (TextBlock)this.FindName("TB");
tb.Text = "Text property changed";
每当我使用名称创建一个新控件时,我都会遇到异常:
TextBlock tb = new TextBlock();
tb.Text = "This is a new textblock";
tb.Name = "TB";
“参数不正确。”
我做错了什么?任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:3)
异常"参数不正确。"可能正在发生,因为创建的控件的名称重复。
对于动态控制部分:您必须将该控件添加到某些Grid或Stackpanel或其他内容。您可以通过获取父控件的内容或子项来引用该动态控件。
喜欢:
TextBlock Tb= new TextBlock();
tb.Text = "Hello";
ContentPanel.Children.Add(Tb);
//参考:
var content = ContentPanel.Children;
foreach(UIElement uiElem in content)
{
if(uiElem.GetType() == typeof(TextBlock))
{
TextBlock tb = uiElem as TextBlock;
tb.Text = "Hyee";
}
}
希望,这可能有所帮助。
(注意:我在这里直接编写了这段代码,而不是从VS复制过来,所以请检查语法和拼写。)
答案 1 :(得分:0)
是的,您可以通过这种方式使用参考动态控件。 但另一种方法是,您还可以在创建控件时保留引用列表。