如何检查控件是否是另一个控件的子控件?"Control.IsChildOf"

Bru*_*oLM 5 c# linq asp.net

我有3个面板:

<asp:Panel ID="ParentPanel" runat="server">
    <asp:Panel ID="AnnoyingPanel" runat="server">
        <asp:Panel ID="P" runat="server">
        </asp:Panel>
    </asp:Panel>
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

我怎样才能检查P孩子是否是ParentPanel?是否有一些LINQish方法可以做到这一点?

有没有比我提供的更优化的方式?也许使用Linq?

Bru*_*oLM 10

我最终做了一个递归扩展方法

public static bool IsChildOf(this Control c, Control parent)
{
    return ((c.Parent != null && c.Parent == parent) || (c.Parent != null ? c.Parent.IsChildOf(parent) : false));
}
Run Code Online (Sandbox Code Playgroud)

导致

P.IsChildOf(ParentPanel); // true
ParentPanel.IsChildOf(P); // false
Run Code Online (Sandbox Code Playgroud)