1

我知道如何在 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";

“参数不正确。”

我究竟做错了什么?任何帮助将不胜感激。

提前致谢。

4

2 回答 2

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复制过来的,所以请检查语法和拼写。)

于 2012-07-13T13:37:13.290 回答
0

是的,您可以通过这种方式使用参考动态控件。但另一种方法是,您还可以在创建控件时保留引用列表。

于 2012-07-12T22:23:16.287 回答