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确实有一些子类,如果您使用的是这些子类之一,如果与 相比,您会错过它typeid

相反,我会进行动态转换(相当于asC# 中的关键字),并检查是否为空。

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