7

ユーザー コントロールを特定のユーザー コントロールとしてキャストして、そのパブリック プロパティにアクセスできるようにする方法はありますか? 基本的に、プレースホルダーのコントロール コレクションを介して foreaching を行っており、ユーザー コントロールのパブリック プロパティにアクセスしようとしています。

foreach(UserControl uc in plhMediaBuys.Controls)
{
    uc.PulblicPropertyIWantAccessTo;
}
4

3 に答える 3

9
foreach(UserControl uc in plhMediaBuys.Controls) {
    MyControl c = uc as MyControl;
    if (c != null) {
        c.PublicPropertyIWantAccessTo;
    }
}
于 2008-10-22T19:01:39.187 に答える
5
foreach(UserControl uc in plhMediaBuys.Controls)
{
  if (uc is MySpecificType)
  {
    return (uc as MySpecificType).PulblicPropertyIWantAccessTo;
  }
}
于 2008-10-22T19:00:35.740 に答える
3

鋳造

私は使用することを好みます:

foreach(UserControl uc in plhMediaBuys.Controls)
{
    ParticularUCType myControl = uc as ParticularUCType;
    if (myControl != null)
    {
        // do stuff with myControl.PulblicPropertyIWantAccessTo;
    }
}

主な理由は、 is キーワードを使用すると、2 つの (準高価な) キャストが発生するためです。

if( uc is ParticularUCType ) // one cast to test if it is the type
{
    ParticularUCType myControl = (ParticularUCType)uc; // second cast
    ParticularUCType myControl = uc as ParticularUCType; // same deal this way
    // do stuff with myControl.PulblicPropertyIWantAccessTo;
}

参考文献

于 2008-10-22T19:04:08.777 に答える