如何找到动态创建按钮的容器 ASP.net

How to find container of dynamically created button ASP.net

我有一个 WebForm,其控件是动态创建的,因为它们的数量可能不同。每个元素都是一个面板,其中包含一个文本框、一个下拉列表和一个按钮。
每个控件都有一个唯一的 ID,所有按钮都有相同的 clickEvent。在 clickEvent 的代码中,我想获取 presedButton 所属面板的 ID,以便我可以访问该面板的 DropDownList 中的所选值和 TextBox 中的文本。
我怎样才能做到以上几点?

private void button1_Click(object sender, EventArgs e)
    {
        var panelId = ((Button)sender).Parent.ID;

    }

或者您可以直接获取控件

private void button1_Click(object sender, EventArgs e)
    {

        var myTextbox = ((Button)sender).Parent.Controls.OfType<TextBox>().FirstOrDefault();
        var myDropDownlist = ((Button)sender.Parent.Controls.OfType<DropDownList>().FirstOrDefault();

    }

或通过控件 ID:

private void button1_Click(object sender, EventArgs e)
    {

        var myTextbox = ((Button)sender).Parent.Controls.OfType<TextBox>().Where(x => x.ID == "textboxID").SingleOrDefault();
        var myDropDownlist = ((Button)sender).Parent.Controls.OfType<DropDownList>().Where(x => x.ID == "dropdownlistID").SingleOrDefault();

    }