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

例外「パラメーターが正しくありません。」作成されたコントロールの名前が重複しているために発生している可能性があります。

動的コントロール部分の場合:そのコントロールをいくつかのグリッドまたはスタックパネルなどに追加する必要があります。親コントロールのコンテンツまたは子を取得することで、その動的コントロールを参照できます。

お気に入り :

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 に答える