3

次のコードでControl^がButton^であるかどうかを確認するにはどうすればよいですか?

System::Void DisableControls(Control ^parent)
{
    for each (Control^ c in parent->Controls)
    {
       if(c== /*Check for Button*/)
       {
         //Do something
       }
    }
}
4

2 に答える 2

4

あなたはこれのためGetType()にそしてtypeidこれのために使うことができます:

if (c->GetType() == Button::typeid) { /* ... */ }
于 2012-06-13T09:51:19.690 に答える
2

WinFormsとWPFのどちらを使用しているかを指定していません。WinFormsボタンのSystem.Windows.Forms.Buttonには組み込みのサブクラスはありませんが、WPFボタンのSystem.Windows.Controls.Buttonにはいくつかのサブクラスがあり、それらのサブクラスの1つを使用している場合は、と比較すると、見逃してしまいますtypeid

as代わりに、動的キャスト( C#のキーワードと同等)を実行し、 nullをチェックします。

Button b = dynamic_cast<Button^>(c);
if(b != nullptr) { ... }
于 2012-06-13T13:34:49.650 に答える