C++ cli 检查控件是否为c+中的按钮+/cli

C++ cli 检查控件是否为c+中的按钮+/cli,c++-cli,C++ Cli,如何在以下代码中检查控件^是否为按钮^ System::Void DisableControls(Control ^parent) { for each (Control^ c in parent->Controls) { if(c== /*Check for Button*/) { //Do something } } } 为此,您可以使用和: if (c->GetType() == Button

如何在以下代码中检查控件^是否为按钮^

System::Void DisableControls(Control ^parent)
{
    for each (Control^ c in parent->Controls)
    {
       if(c== /*Check for Button*/)
       {
         //Do something
       }
    }
}
为此,您可以使用和:

if (c->GetType() == Button::typeid) { /* ... */ }

您没有指定是使用WinForms还是WPF。WinForms按钮没有任何内置子类,但WPF按钮有一些子类,如果您使用这些子类中的一个,与
typeid
相比,您将错过它

相反,我会进行动态转换(相当于C#中的
as
关键字),并检查null

Button b = dynamic_cast<Button^>(c);
if(b != nullptr) { ... }
按钮b=动态播放(c);
如果(b!=nullptr){…}