如何查找UserControl的名称

时间:2016-09-01 07:10:12

标签: c# asp.net user-controls

我在一个名为FirstUserControl和LastUserControl的网页中重复了两次UserControl。

当用户在FirstUserControl中更改Textbox的值时,我们如何识别用户当前正在使用FirstUserControl。我的意思是如何将UserControl的名称作为" FirstUserControl"在UserControl的更改事件中。

以下代码是一个示例。需要在此识别UserControl.Name。

protected void txtAmount_TextChanged(object sender, EventArgs e)
{
    string ControlName = UserControl.Name;

    if(ControlName == "FirstUserControl")
        Response.Write ("You are working on FirstUserControl")

    if(ControlName == "LastUserControl")
        Response.Write ("You are working on LastUserControl")
}

1 个答案:

答案 0 :(得分:0)

sender参数包含对象的引用,表示触发此事件的YourUserControl

因此,您应该按如下方式修改代码以获得父控件(或其他)控件:

protected void txtAmount_TextChanged(object sender, EventArgs e)
{
    Control control = (TextBox)sender;
    while (control as YourUserControl == null)
    {
        control = control.Parent;
    }

    string ControlName = ((YourUserControl)control).Name;

    if(ControlName == "FirstUserControl")
        Response.Write ("You are working on FirstUserControl")

    if(ControlName == "LastUserControl")
        Response.Write ("You are working on LastUserControl")
}

根据msdn

  

基于服务器的ASP.NET Web窗体页面和控件事件遵循事件处理程序方法的标准.NET Framework模式。

     

所有事件都传递两个参数:一个表示引发事件的对象的对象,以及一个包含任何特定于事件的信息的事件对象。